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

feat(Topology/Group): Continuous isomorphism #16991

Open
wants to merge 44 commits into
base: master
Choose a base branch
from

Conversation

Thmoas-Guan
Copy link
Collaborator

@Thmoas-Guan Thmoas-Guan commented Sep 21, 2024

Define the continuous isomorphisms of multiplicative and additive topological group.


Open in Gitpod

Copy link

github-actions bot commented Sep 21, 2024

PR summary 1b1887923b

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff

+ ContinuousAddEquiv
+ ContinuousMulEquiv
+ HomeomorphClass
+ apply_eq_iff_eq
+ apply_eq_iff_symm_apply
+ apply_symm_apply
+ bijective
+ coe_coe
+ coe_mk
+ coe_refl
+ coe_toHomeomorph_symm
+ coe_trans
+ comp_symm_eq
+ congr_arg
+ congr_fun
+ continuousMulEquivOfUnique
+ eq_comp_symm
+ eq_symm_apply
+ eq_symm_comp
+ equivLike_inv_eq_symm
+ ext
+ injective
+ instance : CoeFun (M ≃ₜ* N) fun _ ↦ M → N
+ instance : EquivLike (M ≃ₜ* N) M N
+ instance : HomeomorphClass (M ≃ₜ* N) M N
+ instance : HomeomorphClass (α ≃ₜ β) α β
+ instance : Inhabited (M ≃ₜ* M) := ⟨ContinuousMulEquiv.refl M⟩
+ instance : MulEquivClass (M ≃ₜ* N) M N
+ instance [HomeomorphClass F α β] : CoeTC F (α ≃ₜ β)
+ instance {M N} [Unique M] [Unique N] [Mul M] [Mul N]
+ invFun_eq_symm
+ mk'
+ ofContinuousMulEquivProfiniteGrp
+ refl
+ refl_apply
+ self_comp_symm
+ self_trans_symm
+ surjective
+ symm
+ symm_apply_apply
+ symm_apply_eq
+ symm_comp_eq
+ symm_comp_self
+ symm_symm
+ symm_trans_apply
+ symm_trans_self
+ toEquiv_eq_coe
+ toHomeomorph
+ toHomeomorph_injective
+ totallyDisconnectedSpace
+ trans
+ trans_apply

You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>

The doc-module for script/declarations_diff.sh contains some details about this script.

@Ruben-VandeVelde
Copy link
Collaborator

Can you please follow the structure from #16908 and #16867?

@Thmoas-Guan Thmoas-Guan added t-topology Topological spaces, uniform spaces, metric spaces, filters t-algebra Algebra (groups, rings, fields, etc) WIP Work in progress labels Sep 23, 2024
@leanprover-community-bot-assistant leanprover-community-bot-assistant removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Oct 1, 2024
/-- `ContinuousAddEquivClass F A B` states that `F` is a type of two-sided continuous additive
isomomorphisms.-/
class ContinuousAddEquivClass (F : Type*) (A B : outParam Type*) [Add A] [Add B]
[h : EquivLike F A B] [TopologicalSpace A] [TopologicalSpace B] extends AddEquivClass F A B :
Copy link
Member

Choose a reason for hiding this comment

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

Please avoid hom classes that use both algebra and topology. A better way is to introduce HomeomorphClass and assume [AddEquivClass F A B] [HomeomorphClass F A B] whenever needed.

Copy link
Collaborator Author

@Thmoas-Guan Thmoas-Guan Oct 19, 2024

Choose a reason for hiding this comment

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

I think HomeomorphClass doesn't exist at all. There is kind of a reason below:
图片
Also, the design is under the suggextion below:
图片
Is it safe to introduce two instances like this?
Is there a reason of avoiding the use of both algebra and topology?
Also, what about ContinuousMonoidHomClass, in this sense why this exists?
Sorry that I donesn't know much about how to design APIs, I just follow the suggestions copying the existing codes and create this PR.

Copy link
Collaborator

Choose a reason for hiding this comment

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

@Thmoas-Guan earlier in Mathlib, we would mix algebra / topology in hom classes. This was necessary because they all extended FunLike (or EquivLike). However, we have since pulled this out and pass it as an argument instead. As such, the hom classes are now Prop-valued, and it now makes more sense to split them into their respective parts, hence the suggestion from Yury not to mix.

Also, Yury knows we don't have HomeomorphClass, that's why he's asking you to introduce it (it should be a separate PR though, on which this one will then depend). Note also: ContinuousMonoidHomClass is deprecated.

Does this course of action make sense? Do you know how to proceed?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I introduced HomeomorphClass in PR #18689, may I ask for your help to review it too? Thank you

@j-loreaux j-loreaux added the awaiting-author A reviewer has asked the author a question or requested changes label Nov 5, 2024
@mathlib4-dependent-issues-bot mathlib4-dependent-issues-bot added the blocked-by-other-PR This PR depends on another PR to Mathlib (this label is automatically managed by a bot) label Nov 6, 2024
@mathlib4-dependent-issues-bot
Copy link
Collaborator

This PR/issue depends on:

also remove lemmas already picked up by class instance
@Thmoas-Guan Thmoas-Guan removed the awaiting-author A reviewer has asked the author a question or requested changes label Nov 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocked-by-other-PR This PR depends on another PR to Mathlib (this label is automatically managed by a bot) t-algebra Algebra (groups, rings, fields, etc) t-topology Topological spaces, uniform spaces, metric spaces, filters
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants