Zulip Chat Archive
Stream: mathlib4
Topic: defining `MulAction.ball`
Lara Toledano (Jan 14 2026 at 12:32):
In #32745 I try to create the file Topology.Algebra.MulActionConst in analogy to Topology.Algebra.ConstMulAction. The motivation is to establish definitions needed to formulate and proove the Effros Theorem, see #mathlib4 > Effros Theorem .
I wish to define
open scoped Pointwise
namespace MulAction
/--
The set `{g β’ x | g β U}`. Intended to be used for `U β π 1`. Named in analogy to
`UniformSpace.ball`.
-/
abbrev ball [SMul G X] (x : X) (U : Set G) : Set X := U β’ {x}
@Yury G. Kudryashov commented
This definition has nothing to do with topology, and should go to a file somewhere in Algebra/. I would discuss it on Zulip.
Consider the map
def r [SMul G X] (s : Set G) : Set (X Γ X) := {x | x.2 β s β’ {x.1} }
Given IsTopologicalGroup G and MulAction G X, then we can call UniformSpace.Core.mkOfBasis on r '' (π 1) to define a uniform structure on X. This is the motivation for the analogy between UniformSpace.ball and U β’ {x}. As UniformSpace.ball is defined in Topology.UniformSpace.Defs and not in Data.Rel, I thought the new file Topology.Algebra.MulActionConst would be a good place to define MulAction.ball, as opposed to somewhere in Algebra\.
Does anyone have a suggestion as to a better home for this definition?
Snir Broshi (Jan 14 2026 at 12:37):
Maybe Mathlib.Algebra.Group.Pointwise.Set.Scalar, next to docs#Set.smul_singleton ?
Snir Broshi (Jan 14 2026 at 12:41):
Also if it's going to be in Algebra I think there should be leftBall and rightBall ({x} β’ U).
Though "ball" sounds weird here, what metric is this a ball in?
Lara Toledano (Jan 14 2026 at 12:49):
For the name "ball": U β’ {x}is a ball in the uniform structure I described above, which may not be generated by any one metric but certainly is generated by a family of pseudometrics.
Lara Toledano (Jan 14 2026 at 12:56):
I am not sure what you imagine as the rightBall : given SMul G X, x : X and U : Set G, there is no definition for the expression {x} β’ U. I you are thinking of SMul G X, x : G and U : Set X, then the notation x β’ U is already scoped in Pointwise, so that a specific definition would at most serve symmetry.
Snir Broshi (Jan 14 2026 at 13:09):
I was thinking of the symmetry between docs#Set.smul_singleton and docs#Set.singleton_smul.
While the opposite version is the same as x β’ U without the singleton braces, the definition you suggest also doesn't shorten the notation: ball x U vs U β’ {x}. I don't understand why U β’ {x} deserves a named definition but {x} β’ U = x β’ U doesn't.
Lara Toledano (Jan 14 2026 at 15:05):
I agree that U β’ {x} does not necessarily deserve a named definition. I proposed it mainly because I needed a naming convention for the following lemmas
lemma ball_iUnion [SMul G X] (x : X) {ΞΉ : Type*} (U : ΞΉ β Set G) :
(β i, U i) β’ {x} = β i, (U i) β’ {x} := sorry
lemma ball_iUnionβ [SMul G X] (x : X) {ΞΉ : Type*} {ΞΊ : ΞΉ β Sort*} (U : (i : ΞΉ) β ΞΊ i β Set G) :
(β i, β j, U i j) β’ {x} = β i, β j, (U i j) β’ {x} := sorry
lemma ball_mul [Monoid G] [MulAction G X] (x : X) (U V : Set G) :
((U * V) β’ {x} : Set X) = U β’ (V β’ {x}) := sorry
lemma ball_smul [Monoid G] [MulAction G X] (x : X) (g : G) (U : Set G) :
(g β’ U) β’ ({x} : Set X) = g β’ (U β’ {x}) := sorry
lemma ball_inter [SMul G X] (x : X) (U V : Set G) :
(U β© V) β’ ({x} : Set X) β U β’ {x} β© V β’ {x} := sorry
lemma ball_op_smul [Monoid G] [MulAction G X] (x : X) (g : G) (U : Set G) :
(U <β’ g) β’ ({x} : Set X) = U β’ {g β’ x} := sorry
So I guess the true topic of this discussion is not the home for the definition of MulAction.ball, but rather the home and names for these lemmas. The convention that U β’ {x} should be called "ball" in lemma names could live in a module docstring.
Lara Toledano (Jan 14 2026 at 15:10):
As for the lack of symmetry, I would argue that it is built into the concept of scalar multiplication.
Yury G. Kudryashov (Jan 14 2026 at 15:11):
At least some of these lemmas are true for any set in place of {x}.
Lara Toledano (Jan 14 2026 at 15:26):
That is true, apart from
lemma ball_op_smul [Monoid G] [MulAction G X] (x : X) (g : G) (U : Set G) :
(U <β’ g) β’ ({x} : Set X) = U β’ {g β’ x} := sorry
all of the above are true for any set in place of {x}.
I wanted to name these as a convenience issue because the proof of the Effros Theorem will use them so heavily.
Eric Wieser (Jan 14 2026 at 15:33):
That one is true as (U <β’ g) β’ S = U β’ g β’ S though
Lara Toledano (Jan 16 2026 at 12:41):
Let me motivate my wish for some API around s β’ {x} given [MulAction G X] (s : Set G) (x : X) more clearly.
A IsTopologicalGroup G instance not only defines a compatible uniform structure on G with a basis indexed by π 1, it also defines a uniform structure on X with a basis indexed by π 1, in which {s β’ {x} | s β π 1} is a basis for π x.
The main statement of the Effros Theorem is that, under the right assumptions, including continuity of fun g : G β¦ g β’ x for each x : X, the map g β¦ g β’ x is open. This is equivalent to s β’ {x} being a neighborhood of x for each s β π 1 and x : X, which is equivalent to the given topology on X being finer than the topology of the uniform structure defined on X by the given IsTopologicalGroup G and MulAction G X instances.
In other words, this uniform structure induces the coarsest topology on Xsuch that g β¦ g β’ x is open.
Lara Toledano (Jan 19 2026 at 14:52):
Naming the map x : X β¦ s : Set G β¦ (s β’ {x} : Set X) would also have the benefit of avoiding situations where the type of {x} is unclear.
Last updated: Feb 28 2026 at 14:05 UTC