Skip to content

Compute Hom and Ext over SkewCommutative rings#4459

Draft
joel-dodge wants to merge 5 commits into
Macaulay2:developmentfrom
joel-dodge:hom-pushforward
Draft

Compute Hom and Ext over SkewCommutative rings#4459
joel-dodge wants to merge 5 commits into
Macaulay2:developmentfrom
joel-dodge:hom-pushforward

Conversation

@joel-dodge

@joel-dodge joel-dodge commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

NOT READY FOR REVIEW AT ALL

This is just a draft for now as it also includes changes from #4435 and #4176 that will hopefully be reviewed and merged soon.

@joel-dodge joel-dodge changed the title Support hom and ext via pushforward Compute Hom and Ext over SkewCommutative rings Jun 25, 2026
@d-torrance d-torrance added Core Issues involving the Core scripts. update to existing package(s) labels Jun 25, 2026
@joel-dodge

Copy link
Copy Markdown
Contributor Author

Fascinating there is a failure building examples from the BernsteinSato package

	     W = QQ[x, D, WeylAlgebra=>{x=>D}]
	     M = W^1/ideal(D-1)
	     N = W^1/ideal((D-1)^2)
	     DHom(M,N)

That boils down to an issue computing Hom over a non-commutative ring - a check that is added in this PR. I added this based on my understanding that the methods for computing R-module Homs without the use of pushFwd all produce an R-module as the output and that this cannot be correct as these things are not in fact R-modules. I need to dig into Weyl algebras a bit to understand better what should be happening and may relax the invariant in this case if appropriate.

@joel-dodge

joel-dodge commented Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

Fascinating. The DHom algorithm indeed relies on computing Hom for modules over the Weyl algebra W but IIUC only does so in the case of computing a dual of a free resoltuion in which case the source of the Hom is free. Of course Hom(M, N) IS a left W-module when N is a bimodule so this works fine. Hom(M, N) has a left R-module structure exctly when M is also a right R-module so in these cases the result actually is a bimodule and I think the existing Hom impl gives the right result!

Unfortunately, It seems that querying whether a given module is a bimodule or not seems to be not well supported in the Core M2 offerings - maybe NCAlgebras does this better... but Weyl algebras / skew symmetric algebras are not part of that package.

I found this old issue that is tangentially related: #58

While this is still WIP I am going to change the invariant check that forbids using bare Hom for non-commutative rings with one that instead checks that the target is free in the non-commutative case. I will expect discussion on this point.

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. update to existing package(s)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants