Zulip Chat Archive

Stream: mathlib4

Topic: saturation of a submonoid


Kenny Lau (Oct 31 2025 at 18:47):

I would like to define the saturation of a submonoid, I think it would be useful for localisation stuff

Kenny Lau (Oct 31 2025 at 18:48):

I haven't really seen this name elsewhere other than atiyah-macdonald (P. 44):

image.png

Kenny Lau (Oct 31 2025 at 18:48):

it should be { x : A | ∃ y : A, x * y ∈ s }

Kenny Lau (Oct 31 2025 at 18:49):

seeing this definition written explicitly perhaps it could be done as an iSup, but i'm not sure if the individual submonoids have a name (maybe absorber?)

Aaron Liu (Oct 31 2025 at 18:56):

Kenny Lau said:

it should be { x : A | ∃ y : A, x * y ∈ s }

that's probably something like open scoped Pointwise in x • (s : Set A)

Aaron Liu (Oct 31 2025 at 18:57):

wait no it's not

Aaron Liu (Oct 31 2025 at 18:57):

the other way around maybe

Aaron Liu (Oct 31 2025 at 18:57):

no

Aaron Liu (Oct 31 2025 at 18:57):

oh it's backwards

Aaron Liu (Oct 31 2025 at 18:58):

hmmm

Aaron Liu (Oct 31 2025 at 18:58):

yeah I don't have a clever way of writing this

Kenny Lau (Oct 31 2025 at 19:16):

oh also the individual parts aren't a submonoid, so nvm about iSup

Yury G. Kudryashov (Oct 31 2025 at 19:22):

Kenny Lau said:

it should be { x : A | ∃ y : A, x * y ∈ s }

My guess is that this works only for commutative monoids. Otherwise you should at least allow multiplication on both sides. Also, I'm not sure if the result will be closed under products after that in the noncommutative case.

Aaron Liu (Oct 31 2025 at 19:26):

This is some sort of root

Kenny Lau (Oct 31 2025 at 19:46):

so maybe we should focus on the commutative case for now?

Kenny Lau (Oct 31 2025 at 20:12):

oh no, why do we have AddSubgroup.Saturated

Junyan Xu (Oct 31 2025 at 20:31):

See #Is there code for X? > Closure of Submonoid in CommMonoids @ 💬

Kenny Lau (Oct 31 2025 at 20:33):

@Junyan Xu did they decide on a name?

Aaron Liu (Oct 31 2025 at 20:40):

isn't this like

Aaron Liu (Oct 31 2025 at 20:40):

dividing a submodule by a scalar action

Aaron Liu (Oct 31 2025 at 20:40):

but without the addition

Kenny Lau (Oct 31 2025 at 21:53):

#31132

Yan Yablonovskiy 🇺🇦 (Nov 01 2025 at 00:34):

Kenny Lau said:

I haven't really seen this name elsewhere other than atiyah-macdonald (P. 44):

image.png

I was also planning to define these for my own use in my wheel theory repo, they are used in Wheels, on division by zero .

Kenny Lau (Nov 01 2025 at 10:48):

@Aaron Liu for the case of the smallest saturated submonoid of (Function.End Nat), is it just going to contain everything?

Kenny Lau (Nov 01 2025 at 10:57):

yeah i think so:

  • it needs to contain id
  • then it contains any f and g with fg=id, so it contains all injective and surjective maps
  • if f is an arbitrary function with infinite range, then the epi-mono factorisaion gives it as a surjection then an injection
  • for finite range, the surjection is to Fin n instead, but i claim this is an injection then a surjection: take the injection f(x)=2x, then for the surjection map 2x to the correct things, then the odd numbers can be mapped to Nat, so this map is surjective

Kenny Lau (Nov 01 2025 at 10:58):

in effect we have proved Unique (SaturatedMonoid (Function.End X)) for any Infinite X

Kenny Lau (Nov 01 2025 at 10:59):

for finite X, bijective iff surjective iff injective, so the bijective maps form a saturated submonoid, which is different from the top for #X > 1

Kenny Lau (Nov 01 2025 at 11:00):

do you think this is equivalent to choice? :upside_down:

Kenny Lau (Nov 01 2025 at 17:26):

@Aaron Liu i'm wondering for the definitions specialised to commmonoid whether i should have them as separate definitions or just inline them in the relevant theorems

Aaron Liu (Nov 01 2025 at 17:28):

some of my favorite monoids are noncommutative

Aaron Liu (Nov 01 2025 at 17:28):

can't we just have theorems specialized to comm monoids

Kenny Lau (Nov 01 2025 at 17:28):

lemme show you what i mean

Kenny Lau (Nov 01 2025 at 17:29):

image.png

image.png

Kenny Lau (Nov 01 2025 at 17:29):

this is my current setup, which feels suboptimal

Aaron Liu (Nov 01 2025 at 17:29):

oh that's weird

Kenny Lau (Nov 01 2025 at 17:29):

I kinda need to construct it once in order to prove that it is the saturation

Kenny Lau (Nov 01 2025 at 17:29):

so i'm wondering if i should construct it inline, i.e. in the theorem

Aaron Liu (Nov 01 2025 at 17:29):

can't you just use induction

Kenny Lau (Nov 01 2025 at 17:29):

or, i can use private

Aaron Liu (Nov 01 2025 at 17:29):

set up an induction principle

Kenny Lau (Nov 01 2025 at 17:31):

lemme try that

Aaron Liu (Nov 01 2025 at 17:31):

I'm talking about something like docs#Subgroup.closure_induction

Kenny Lau (Nov 01 2025 at 17:31):

yes, i understand, thanks

Aaron Liu (Nov 01 2025 at 17:31):

then you can just apply it in the theorem


Last updated: Dec 20 2025 at 21:32 UTC