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.IsTorsionFree
to a separate file (or toGroup/Defs
); - reformulate the definition without without
periodicPts
; - add instances from
AddMonoid.IsTorsionFree M
toNoZeroSMulDivisors Nat M
andNoZeroSMulDivisors Int M
; - assume
AddMoonoid.IsTorsionFree M
instead 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