Skip to content

[Merged by Bors] - feat: SeparatelyContinuousMul class for multiplication which is continuous in each variable#35589

Closed
j-loreaux wants to merge 8 commits intoleanprover-community:masterfrom
j-loreaux:continuous-const-mul
Closed

[Merged by Bors] - feat: SeparatelyContinuousMul class for multiplication which is continuous in each variable#35589
j-loreaux wants to merge 8 commits intoleanprover-community:masterfrom
j-loreaux:continuous-const-mul

Conversation

@j-loreaux
Copy link
Copy Markdown
Contributor

@j-loreaux j-loreaux commented Feb 20, 2026

In functional analysis, more specifically operator algebras, one often considers topologies weaker than the norm topology. There are a plethora of these, and virtually none of them satisfy docs#ContinuousMul because multiplication is not jointly continuous, but it is continuous in each variable separately. Sometimes multiplication is jointly continuous on bounded sets.

In fact, this separate continuity of multiplication is really the correct hypothesis for a bunch of places where we use ContinuousMul. E.g., it is the proper assumption for docs#Set.isClosed_centralizer, but it's also the correct one for working with topological subobjects. Of course, one way to spell this separate continuity is ContinuousConstSMul α α and ContinuousConstSMul αᵐᵒᵖ α, but this is painful because it means (a) you need to write down both classes whenever you want to prove something about it, and (b) all the generic lemmas are about instead of *.

Consequently, in this PR we define classes SeparatelyContinuousMul (and SeparatelyContinuousAdd via to_additive) to encode this weaker form of continuity of multiplication.


I've only done a limited amount of generalization here for Subsemigroup and Submonoid, just to show that the basic material generalizes. In a follow-up PR I will do more generalization using this class.

Open in Gitpod

@github-actions github-actions bot added the t-topology Topological spaces, uniform spaces, metric spaces, filters label Feb 20, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 20, 2026

PR summary 08657ed7f8

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff

+ Continuous.const_mul
+ Continuous.mul_const
+ ContinuousAt.const_mul
+ ContinuousAt.mul_const
+ ContinuousOn.const_mul
+ ContinuousOn.mul_const
+ ContinuousWithinAt.const_mul
+ ContinuousWithinAt.mul_const
+ Pi.separatelyContinuousMul
+ Prod.separatelyContinuousMul
+ SeparatelyContinuousAdd
+ SeparatelyContinuousMul
+ SeparatelyContinuousMul.to_continuousSMul
+ SeparatelyContinuousMul.to_continuousSMul_op
+ Submonoid.separatelyContinuousMul
+ Subsemigroup.separatelyContinuousMul
+ Topology.IsInducing.separatelyContinuousMul
+ continuous_add_left
+ continuous_add_right
+ continuous_const_mul
+ continuous_mul_const
+ instance : SeparatelyContinuousMul (ULift.{u} M)
+ instance : SeparatelyContinuousMul Mᵒᵈ
+ instance [ContinuousMul M] : SeparatelyContinuousMul M
+ instance [TopologicalSpace M] [Add M] [SeparatelyContinuousAdd M] :
+ instance [TopologicalSpace M] [Mul M] [SeparatelyContinuousMul M] :
+ instance [TopologicalSpace α] [Mul α] [SeparatelyContinuousMul α] :
+ map_mem_closure₂'
+ requires
+ separatelyContinuousMul_induced

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 scripts/declarations_diff.sh contains some details about this script.


No changes to technical debt.

You can run this locally as

./scripts/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).

Copy link
Copy Markdown
Contributor

@ocfnash ocfnash left a comment

Choose a reason for hiding this comment

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

Thanks!

bors d+

@mathlib-bors
Copy link
Copy Markdown
Contributor

mathlib-bors bot commented Feb 26, 2026

✌️ j-loreaux can now approve this pull request. To approve and merge a pull request, simply reply with bors r+. More detailed instructions are available here.

@mathlib-triage mathlib-triage bot added the delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). label Feb 26, 2026
Co-authored-by: Oliver Nash <7734364+ocfnash@users.noreply.github.com>
@j-loreaux
Copy link
Copy Markdown
Contributor Author

bors merge

@mathlib-triage mathlib-triage bot added the ready-to-merge This PR has been sent to bors. label Feb 26, 2026
mathlib-bors bot pushed a commit that referenced this pull request Feb 26, 2026
…tinuous in each variable (#35589)

In functional analysis, more specifically operator algebras, one often considers topologies weaker than the norm topology. There are a plethora of these, and virtually none of them satisfy docs#ContinuousMul because multiplication is not jointly continuous, but it *is* continuous in each variable separately. Sometimes multiplication is jointly continuous on bounded sets.

In fact, this separate continuity of multiplication is really the correct hypothesis for a bunch of places where we use `ContinuousMul`. E.g., it is the proper assumption for docs#Set.isClosed_centralizer, but it's also the correct one for working with topological subobjects. Of course, one way to spell this separate continuity is `ContinuousConstSMul α α` and `ContinuousConstSMul αᵐᵒᵖ α`, but this is painful because it means (a) you need to write down both classes whenever you want to prove something about it, and (b) all the generic lemmas are about `•` instead of `*`.

Consequently, in this PR we define classes `SeparatelyContinuousMul` (and `SeparatelyContinuousAdd` via `to_additive`) to encode this weaker form of continuity of multiplication.
@mathlib-bors
Copy link
Copy Markdown
Contributor

mathlib-bors bot commented Feb 26, 2026

Pull request successfully merged into master.

Build succeeded:

@mathlib-bors mathlib-bors bot changed the title feat: SeparatelyContinuousMul class for multiplication which is continuous in each variable [Merged by Bors] - feat: SeparatelyContinuousMul class for multiplication which is continuous in each variable Feb 26, 2026
@mathlib-bors mathlib-bors bot closed this Feb 26, 2026
pfaffelh pushed a commit to pfaffelh/mathlib4 that referenced this pull request Mar 2, 2026
…tinuous in each variable (leanprover-community#35589)

In functional analysis, more specifically operator algebras, one often considers topologies weaker than the norm topology. There are a plethora of these, and virtually none of them satisfy docs#ContinuousMul because multiplication is not jointly continuous, but it *is* continuous in each variable separately. Sometimes multiplication is jointly continuous on bounded sets.

In fact, this separate continuity of multiplication is really the correct hypothesis for a bunch of places where we use `ContinuousMul`. E.g., it is the proper assumption for docs#Set.isClosed_centralizer, but it's also the correct one for working with topological subobjects. Of course, one way to spell this separate continuity is `ContinuousConstSMul α α` and `ContinuousConstSMul αᵐᵒᵖ α`, but this is painful because it means (a) you need to write down both classes whenever you want to prove something about it, and (b) all the generic lemmas are about `•` instead of `*`.

Consequently, in this PR we define classes `SeparatelyContinuousMul` (and `SeparatelyContinuousAdd` via `to_additive`) to encode this weaker form of continuity of multiplication.
pevogam pushed a commit to pevogam/mathlib4 that referenced this pull request Mar 19, 2026
…tinuous in each variable (leanprover-community#35589)

In functional analysis, more specifically operator algebras, one often considers topologies weaker than the norm topology. There are a plethora of these, and virtually none of them satisfy docs#ContinuousMul because multiplication is not jointly continuous, but it *is* continuous in each variable separately. Sometimes multiplication is jointly continuous on bounded sets.

In fact, this separate continuity of multiplication is really the correct hypothesis for a bunch of places where we use `ContinuousMul`. E.g., it is the proper assumption for docs#Set.isClosed_centralizer, but it's also the correct one for working with topological subobjects. Of course, one way to spell this separate continuity is `ContinuousConstSMul α α` and `ContinuousConstSMul αᵐᵒᵖ α`, but this is painful because it means (a) you need to write down both classes whenever you want to prove something about it, and (b) all the generic lemmas are about `•` instead of `*`.

Consequently, in this PR we define classes `SeparatelyContinuousMul` (and `SeparatelyContinuousAdd` via `to_additive`) to encode this weaker form of continuity of multiplication.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). 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.

2 participants