Center of skew rings and kernel of RingMap to skew rings - #4485
Open
joel-dodge wants to merge 6 commits into
Open
Center of skew rings and kernel of RingMap to skew rings#4485joel-dodge wants to merge 6 commits into
joel-dodge wants to merge 6 commits into
Conversation
joel-dodge
marked this pull request as ready for review
July 31, 2026 17:53
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.
Contributor
Author
|
@MichaelABurr @ggsmith any progress reviewing this? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add
centerRingmethod 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
kernelis 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 callingneedsPackageinside 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.