Skip to content

Center of skew rings and kernel of RingMap to skew rings - #4485

Open
joel-dodge wants to merge 6 commits into
Macaulay2:developmentfrom
joel-dodge:skew-kernels
Open

Center of skew rings and kernel of RingMap to skew rings#4485
joel-dodge wants to merge 6 commits into
Macaulay2:developmentfrom
joel-dodge:skew-kernels

Conversation

@joel-dodge

@joel-dodge joel-dodge commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Add centerRing method to compute the center of a ring. Currently supports skew polynomial rings (and commutative rings 😂 ).

Then adds a new strategy for computing the kernel of a RingMap whose target is SkewCommutative by reducing to a map to the center of the target.

This requires some awkward packaging since kernel is in the core and the strategy for computing the center of a skew commutative ring depends on the PushForward package. We rely here on the "hack" of calling needsPackage inside the hook only when needed although @d-torrance says "I'm not sure if this is a very elegant solution" and I am inclined to agree.

Note while editing ringmap.m2 I took the opportunity to clean up ws formatting in the block declaring different kernel strategies for RingMap. Consider toggling the "hide whitespace" option while reviewing this PR.

@joel-dodge
joel-dodge marked this pull request as ready for review July 31, 2026 17:53
@d-torrance d-torrance added the Core Issues involving the Core scripts. label Aug 2, 2026
d-torrance added a commit to d-torrance/M2 that referenced this pull request Aug 7, 2026
bugs/dan/1-jacobian through 1-loadPackage.  Six fixed, two duplicates, two
wontfix, two filed.

Filed:

* Macaulay2#4589 1-join-hash -- the guess in the file is right and the saving is real.
  Every List construction folds the whole list (basic.d:114-117 does
  r.hash = hash(r); the fold is at :82-85), so join of two 200k lists costs
  11.2ms of which 7.5-8.5ms is hashing -- measurable because a Sequence's hash
  is not cached and refolds on demand.  The fold is combinable:
  h(L++M) = 1299833^#M * (hash L - c) + hash M mod 2^64, c = hash class L +
  23407, verified on seven cases.  My first attempt used the Sequence constants
  and failed all five, which is how the two folds turned out to differ.
* Macaulay2#4590 1-kernel-ringmap -- Mike's 2008 recipe, unevenly landed.  The Hilbert
  hint is implemented for degree-preserving maps (ringmap.m2:320-332, verified
  live: gb records rawGBSetHilbertFunction log), the inhomogeneous case it was
  written for is skipped because canUseHilbertHint requires isHomogeneous
  (gb.m2:271), and the recipe's forceGB step is Macaulay2#686.  PR Macaulay2#4485 is adding
  another strategy to the same table.

Duplicates, both with comments posted: 1-kernel-ringmap-ZZ -> Macaulay2#1518 (the message
moved to methods.m2:695, and ringmap.m2:336's ZZ strategy only fires when the
source is ZZ itself), 1-line-wrapping-with-negative-numbers -> Macaulay2#4149 (the same
splitcolumn gap one character class over; three lines still end in a bare
hyphen).

Fixed: 1-leadTerm-crash.m2 (the ignored engine error is propagated, so
enginering.m2:496 errors instead of smoking), 1-lift-RR-CC (both spellings
return precision 53), 1-lift-modules (lift((QQ[x])^3, QQ) is QQ^3), 1-lifting
(.3 * id_(QQ^3) is over RR_53 now, and promote(.3, QQ) errors -- the direction
PR Macaulay2#62 on MichaelABurr/M2 is formalising), 1-lcm-needed (implemented, gcd
compiled at 14.3us on 700-digit inputs, and the Binary ask declined on
measurement: 9.7ms through Binary against 13.8ms for a hand fold), 1-loadPackage
(PR Macaulay2#3852's warning meets the need; the file's own example is invalid today for
a rank reason and fails identically with no reload).

Wontfix: 1-jacobian (the intrinsic object is one line away, and jacobian-doc
documents the present behaviour as "identical to jacobian generators I"),
1-list-of-ideals-of-R (asked and declined in PR Macaulay2#3328).

dan/1 todo 154 -> 142, settled 351 -> 363.
@joel-dodge

Copy link
Copy Markdown
Contributor Author

@MichaelABurr @ggsmith any progress reviewing this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Core Issues involving the Core scripts.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants