feat(Algebra.GroupWithZero): generalize SMulZeroClass to MonoidWithZero and lift MulDistribMulAction to nonZeroDivisors#40604
Conversation
…tance from GroupWithZero to MonoidWithZero The existing instance `SMulZeroClass α β` under `[Group α] [GroupWithZero β] [MulDistribMulAction α β]` is generalized: `GroupWithZero β` is weakened to `MonoidWithZero β`. The proof that `g • 0 = 0` uses only `smul_mul'`, `smul_inv_smul` (group invertibility of `α`), `zero_mul`, and `mul_zero`, so it does not require the invertibility of nonzero elements of `β`.
PR summary 198f3e199dImport changes for modified filesNo significant changes to the import graph Import changes for all files
|
✅ PR Title Formatted CorrectlyThe title of this PR has been updated to match our commit style conventions. |
…ds zero to zero; lift to nonZeroDivisors - Generalize the `SMulZeroClass α β` instance in `GroupWithZero.Action.Defs` from `[GroupWithZero β]` to `[MonoidWithZero β]`: the proof uses only `smul_mul'`, `smul_inv_smul`, and `mul_zero`, with no need for invertibility in `β`. - Add `smul_mem_nonZeroDivisorsLeft/Right`, `smul_mem_nonZeroDivisors`, and instances `SMul G M₀⁰`, `MulAction G M₀⁰`, `MulDistribMulAction G M₀⁰` in `NonZeroDivisors`.
Generalize the instance
SMulZeroClass α βunder
[Group α] [GroupWithZero β] [MulDistribMulAction α β]to[Group α] [MonoidWithZero β] [MulDistribMulAction α β].From an action
[Group G] [MonoidWithZero M] [MulDistribMulAction G M], use this instance to construct an action on the nonzero divisors of 'M'.🤖 This PR was extracted from the SKW project by Claude.