leanprover-community / leanprover-community/mathlib4
nonZeroDivisors, regular elements, and localization
Nobody has claimed this yet.
- Dominant language
- Lean
- Stars
- 4.1k
- Forks
- 1.7k
- PR merge metrics
- No merged PRs in 30d
Description
Zulip: #mathlib4 > Issue: nonZeroDivisors, regular elements, and localization
Non-zero-divisors
We currently have the following defeqs:
import Mathlib.Algebra.GroupWithZero.NonZeroDivisors
variable (M : Type*) [MonoidWithZero M]
example : nonZeroDivisorsLeft M = nonZeroDivisors M := rfl
example : nonZeroDivisorsRight M = nonZeroSMulDivisors M M := rfl
Notice also that nonZeroDivisorsLeft coincides with non-left zero divisors according to Wikipedia, while nonZeroDivisorsRight coincides with non-right zero divisors. My suggestions are:
-
Switch the names
nonZeroDivisorsLeftandnonZeroDivisorsRight(possibly rename tononLeft/RightZeroDivisors) : #27224 -
Redefine
nonZeroDivisorsthe infimum ofnonZeroDivisorsLeftandnonZeroDivisorsRightfor symmetry withIsRegular) : #27224
Regular elements
-
Define the submonoids
leftRegulars,rightRegulars,regularsandsmulRegularsin terms ofIsLeftRegular,IsRightRegular,IsRegularandIsSMulRegular(and additivize). Show they are contained innonZeroDivisorsLeft/Rightetc. respectively (assuming onlyMulZeroClass). -
Show that they agree with
non(SMul)ZeroDivisorsLeft/Rightin a ring (≤holds in general): done for unbundledIs(Left/Right)Regularin #27791 -
Redefine
Is(Left,Right)CancelMul,Is(Left,Right)CancelMulZeroin terms ofIs(Left,Right)RegularandIsSMulRegular: #27791 -
(?) Use
IsSMulRegularin the definition ofIsCancelSMul(133 → 151 imports) -
In a (non-unital non-associative) ring,
IsLeftCancelMulZero,IsRightCancelMulZero,IsCancelMulZeroandNoZeroDivisorsare all equivalent (note thatIsDomain=Nontrivial+IsCancelMulZero) : #27791
Localization (of commutative monoids/semirings)
- Replace
nonZeroDivisorsbyregularsin localization API, especially in IsFractionRing, FractionRing, and IsLocalizedModule.rank_eq: IsLocalization.injective continue to hold, and it's also true that the localization mapfin IsLocalizedModule is injective iff the submonoid S is contained insmulRegulars R M.
MvPolynomial
MonomialOrder.degree_mul_of_isRegular_left / MvPolynomial.totalDegree_mul_of_isDomain should only require nonZeroDivisors / NoZeroDivisors.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with Mathlib/Algebra/Regular/Basic, Mathlib/Algebra/Regular/SMul, and Mathlib/Algebra/GroupWithZero/NonZeroDivisors to review the regular-element definitions. Then inspect the localization APIs in Mathlib/RingTheory/Localization/FractionRing, Mathlib/Algebra/Module/LocalizedModule/Basic, and Mathlib/LinearAlgebra/Dimension/Localization. Done means addressing the unchecked regular-submonoid, localization, and IsCancelSMul items while preserving the stated injectivity and MvPolynomial requirements.
Written by the indexing model from the issue text.
Assessment
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100