Zulip Chat Archive
Stream: maths
Topic: Multiplicative version of NoZeroSMulDivisors?
Yury G. Kudryashov (Sep 18 2024 at 23:18):
I noticed that docs#Subgroup.mem_closure_singleton_iff_existsUnique_zpow assumes a LinearOrderedCommGroup while actually it needs a ^ m = 1 → a = 1 ∨ m = 0. Should we add NoRoots, a multiplicative version of docs#NoZeroSMulDivisors ?
Johan Commelin (Sep 19 2024 at 07:45):
Or NoRootsOfUnity?
Yury G. Kudryashov (Sep 25 2024 at 16:27):
As @Yongle Hu pointed on Github, we already have this for Nat (the only relevant case, as we don't have typeclasses for a ^ (x + y) = a ^ x * a ^ y etc), and it's called docs#Monoid.IsTorsionFree
Yury G. Kudryashov (Sep 25 2024 at 16:31):
Unless someone comes with a better plan, I'm going to
- move the definition of
Monoid.IsTorsionFreeto a separate file (or toGroup/Defs); - reformulate the definition without without
periodicPts; - add instances from
AddMonoid.IsTorsionFree MtoNoZeroSMulDivisors Nat MandNoZeroSMulDivisors Int M; - assume
AddMoonoid.IsTorsionFree Minstead ofNoZeroSMulDivisors (Nat|Int) M - reformulate docs#zpow_right_inj etc for
Monoid.IsTorsionFree, as I did in #17133 withNoRootsOfUnity.
Yury G. Kudryashov (Sep 25 2024 at 16:31):
Since Monoid.IsTorsionFree is an existing typeclass, it will be easier to split this refactor into steps.
Yury G. Kudryashov (Sep 25 2024 at 23:26):
BTW, should we use Monoid.IsTorsionFree/AddMonoid.IsTorsionFree or IsMulTorsionFree/IsAddTorsionFree?
Yaël Dillies (Sep 26 2024 at 07:44):
I much prefer the latter
Last updated: May 02 2025 at 03:31 UTC