Skip to content

[Merged by Bors] - feat(Topology/Homeomorph): add Equiv.IsHomeomorph_iff and LinearEquiv.IsHomeomorph_iff #38660

Closed
sharky564 wants to merge 5 commits intoleanprover-community:masterfrom
sharky564:SK_IsHomeomorphism_Gaps
Closed

[Merged by Bors] - feat(Topology/Homeomorph): add Equiv.IsHomeomorph_iff and LinearEquiv.IsHomeomorph_iff #38660
sharky564 wants to merge 5 commits intoleanprover-community:masterfrom
sharky564:SK_IsHomeomorphism_Gaps

Conversation

@sharky564
Copy link
Copy Markdown
Contributor

@sharky564 sharky564 commented Apr 28, 2026

This PR adds two characterisations of IsHomeomorph for bundled equivalences. For a plain Equiv between topological spaces, Equiv.isHomeomorph_iff states that the equivalence is a homeomorphism if and only if it is continuous in both directions. The corresponding statement for a LinearEquiv between topological modules is added as LinearEquiv.isHomeomorph_iff, derived from the Equiv version.


The motivation comes from work on topological complements of submodules in PR #38547, where one wants to upgrade a LinearEquiv to a ContinuousLinearEquiv and the cleanest characterisation is in terms of continuity in both directions. The existing API offers isHomeomorph_iff_exists_inverse, but for equivalences this requires manually identifying the existential inverse with e.symm, which is unnecessarily indirect.

@github-actions github-actions Bot added the new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! label Apr 28, 2026
@github-actions
Copy link
Copy Markdown

Welcome new contributor!

Thank you for contributing to Mathlib! If you haven't done so already, please review our contribution guidelines, as well as the style guide and naming conventions. In particular, we kindly remind contributors that we have guidelines regarding the use of AI when making pull requests.

We use a review queue to manage reviews. If your PR does not appear there, it is probably because it is not successfully building (i.e., it doesn't have a green checkmark), has the awaiting-author tag, or another reason described in the Lifecycle of a PR. The review dashboard has a dedicated webpage which shows whether your PR is on the review queue, and (if not), why.

If you haven't already done so, please come to https://leanprover.zulipchat.com/, introduce yourself, and mention your new PR.

Thank you again for joining our community.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 28, 2026

PR summary 606efcb73e

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff

+ Equiv.isHomeomorph_iff
+ LinearEquiv.isHomeomorph_iff

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.


No changes to technical debt.

This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:

git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@github-actions github-actions Bot added the t-topology Topological spaces, uniform spaces, metric spaces, filters label Apr 28, 2026
Copy link
Copy Markdown
Collaborator

@scholzhannah scholzhannah left a comment

Choose a reason for hiding this comment

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

Thank you for your PR!

Two general comments:

Could you move the first paragraph of your PR description above the line? That way it ends up in the commit.

Could you explain in more detail what you need this for? Typically you want to use IsHomeomorph when the inverse map isn't nice or easy to describe and otherwise use Homeomorph. It seems to me that if you already have an Equiv you should always be in the second case. Could you explain why it is more comfortable to use IsHomeomorph in your application?

Comment thread Mathlib/Topology/Algebra/Module/Equiv.lean Outdated
@mcdoll mcdoll added the awaiting-author A reviewer has asked the author a question or requested changes. label Apr 29, 2026
@ADedecker
Copy link
Copy Markdown
Member

Typically you want to use IsHomeomorph when the inverse map isn't nice or easy to describe and otherwise use Homeomorph.

I think the point here is that we have a criterion of the form "this property is satisfied iff a certain equiv is an homeomorphism". Of course we then bundle it to an Homeomorph, but in order to state the iff the most convenient is really to use IsHomeomorph.

@sharky564
Copy link
Copy Markdown
Contributor Author

sharky564 commented Apr 29, 2026

Thanks for the review! I have moved the description paragraph.

On the motivation: ADedecker captured the use case exactly. The pattern in #38547 is a criterion of the shape "the submodules p and q are topological complements iff p.prodEquivOfIsCompl q h is a homeomorphism" and stating the iff directly in terms of IsHomeomorph is cleaner than constructing a Homeomorph inside the iff. The bundled Homeomorph is then built once on the forward direction.

@sharky564
Copy link
Copy Markdown
Contributor Author

-awaiting-author

@github-actions github-actions Bot removed the awaiting-author A reviewer has asked the author a question or requested changes. label Apr 29, 2026
Copy link
Copy Markdown
Collaborator

@scholzhannah scholzhannah left a comment

Choose a reason for hiding this comment

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

Okay, thank you for explaining! This seems good to me then.

Copy link
Copy Markdown
Contributor

@robin-carlier robin-carlier left a comment

Choose a reason for hiding this comment

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

Thanks!

maintainer merge

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 1, 2026

🚀 Pull request has been placed on the maintainer queue by robin-carlier.

@mathlib-triage mathlib-triage Bot added the maintainer-merge A reviewer has approved the changed; awaiting maintainer approval. label May 1, 2026
@ADedecker
Copy link
Copy Markdown
Member

Thanks!

bors merge

mathlib-bors Bot pushed a commit that referenced this pull request May 2, 2026
….IsHomeomorph_iff (#38660)

This PR adds two characterisations of `IsHomeomorph` for bundled equivalences. For a plain `Equiv` between topological spaces, `Equiv.isHomeomorph_iff` states that the equivalence is a homeomorphism if and only if it is continuous in both directions. The corresponding statement for a `LinearEquiv` between topological modules is added as `LinearEquiv.isHomeomorph_iff`, derived from the `Equiv` version.
@mathlib-triage mathlib-triage Bot added ready-to-merge This PR has been sent to bors. and removed maintainer-merge A reviewer has approved the changed; awaiting maintainer approval. labels May 2, 2026
@mathlib-bors
Copy link
Copy Markdown
Contributor

mathlib-bors Bot commented May 2, 2026

Pull request successfully merged into master.

Build succeeded:

@mathlib-bors mathlib-bors Bot changed the title feat(Topology/Homeomorph): add Equiv.IsHomeomorph_iff and LinearEquiv.IsHomeomorph_iff [Merged by Bors] - feat(Topology/Homeomorph): add Equiv.IsHomeomorph_iff and LinearEquiv.IsHomeomorph_iff May 2, 2026
@mathlib-bors mathlib-bors Bot closed this May 2, 2026
gaetanserre pushed a commit to gaetanserre/mathlib4 that referenced this pull request May 5, 2026
….IsHomeomorph_iff (leanprover-community#38660)

This PR adds two characterisations of `IsHomeomorph` for bundled equivalences. For a plain `Equiv` between topological spaces, `Equiv.isHomeomorph_iff` states that the equivalence is a homeomorphism if and only if it is continuous in both directions. The corresponding statement for a `LinearEquiv` between topological modules is added as `LinearEquiv.isHomeomorph_iff`, derived from the `Equiv` version.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! ready-to-merge This PR has been sent to bors. t-topology Topological spaces, uniform spaces, metric spaces, filters

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants