leanprover-community / leanprover-community/mathlib4

nonZeroDivisors, regular elements, and localization

Open
#22,997 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

t-algebra
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 nonZeroDivisorsLeft and nonZeroDivisorsRight (possibly rename to nonLeft/RightZeroDivisors) : #27224

  • Redefine nonZeroDivisors the infimum of nonZeroDivisorsLeft and nonZeroDivisorsRight for symmetry with IsRegular) : #27224

Regular elements
  • Define the submonoids leftRegulars, rightRegulars, regulars and smulRegulars in terms of IsLeftRegular, IsRightRegular, IsRegular and IsSMulRegular (and additivize). Show they are contained in nonZeroDivisorsLeft/Right etc. respectively (assuming only MulZeroClass).

  • Show that they agree with non(SMul)ZeroDivisorsLeft/Right in a ring (holds in general): done for unbundled Is(Left/Right)Regular in #27791

  • Redefine Is(Left,Right)CancelMul, Is(Left,Right)CancelMulZero in terms of Is(Left,Right)Regular and IsSMulRegular : #27791

  • (?) Use IsSMulRegular in the definition of IsCancelSMul (133 → 151 imports)

  • In a (non-unital non-associative) ring, IsLeftCancelMulZero, IsRightCancelMulZero, IsCancelMulZero and NoZeroDivisors are all equivalent (note that IsDomain = Nontrivial + IsCancelMulZero) : #27791

Localization (of commutative monoids/semirings)
MvPolynomial

MonomialOrder.degree_mul_of_isRegular_left / MvPolynomial.totalDegree_mul_of_isDomain should only require nonZeroDivisors / NoZeroDivisors.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.