Opened 11 months ago
Closed 10 months ago
#26027 closed enhancement (fixed)
Implement morphisms for differential graded commutative algebras
Reported by:  jhpalmieri  Owned by:  

Priority:  minor  Milestone:  sage8.4 
Component:  algebra  Keywords:  
Cc:  tscrim  Merged in:  
Authors:  John Palmieri  Reviewers:  Travis Scrimshaw 
Report Upstream:  N/A  Work issues:  
Branch:  9d79cdc (Commits)  Commit:  9d79cdc8797764361918ffb668deb5cbdbcedc96 
Dependencies:  Stopgaps: 
Description
As reported on ask.sagemath.org, homomorphisms have not been implemented for differential graded commutative algebras.
Change History (11)
comment:1 Changed 11 months ago by
 Cc tscrim added
comment:2 Changed 11 months ago by
You could manually substitute in monomials variablebyvariable. It should be there automatically (e.g., in the _element_constructor_
for galgebras on the Sage side). I don't know offhand how easy it would be to add that, but I imagine that would be easy enough to add.
comment:3 Changed 10 months ago by
 Branch set to u/jhpalmieri/dgamorphism
comment:4 Changed 10 months ago by
 Commit set to abe62ab57699966f8ab56141e19983f68238fec1
 Status changed from new to needs_review
Here is an implementation.
New commits:
abe62ab  trac 26027: morphisms for graded commutative algebras

comment:5 followup: ↓ 6 Changed 10 months ago by
 Reviewers set to Travis Scrimshaw
Overall it looks good, but I have two comments:
I don't understand why you have an _im_gens_
method for the elements. The GCAlgebraMorphism._call_
will only used for one type of element. Since the necessary data is part of the element's API, you can just use it there. There does not need to be a need for this indirection (which means it could be a heavier maintenance burden).
Why are you using self.parent()(0)
instead of self.parent().zero()
?
comment:6 in reply to: ↑ 5 Changed 10 months ago by
Replying to tscrim:
Overall it looks good, but I have two comments:
I don't understand why you have an
_im_gens_
method for the elements. TheGCAlgebraMorphism._call_
will only used for one type of element. Since the necessary data is part of the element's API, you can just use it there. There does not need to be a need for this indirection (which means it could be a heavier maintenance burden).
Good idea. I've changed this.
Why are you using
self.parent()(0)
instead ofself.parent().zero()
?
Because that was in the code I copied from free_algebra_element.py
. I've changed both to use zero()
instead of (0)
. If doctests pass, I will update the branch.
comment:7 Changed 10 months ago by
 Commit changed from abe62ab57699966f8ab56141e19983f68238fec1 to 9d79cdc8797764361918ffb668deb5cbdbcedc96
comment:8 Changed 10 months ago by
Here is the new branch.
comment:9 Changed 10 months ago by
 Status changed from needs_review to positive_review
Thanks. LGTM.
comment:10 Changed 10 months ago by
Thanks for the feedback and the review.
comment:11 Changed 10 months ago by
 Branch changed from u/jhpalmieri/dgamorphism to 9d79cdc8797764361918ffb668deb5cbdbcedc96
 Resolution set to fixed
 Status changed from positive_review to closed
This may involve implementing homomorphisms for
NCPolynomialRing_plural
. As it stands, I don't know a good way to check the noncommutative relations for a potential ring homomorphism. That is, if I havehow can I check whether
f(y*x) + f(x*y) == 0
? The issue is thaty*x
is an element of the free algebra onx
andy
, whilex*y
is an element ofR
, but there is no way (as far as I can see) of coercing or converting elements of the free algebra to elements of its quotientR
. For example, the construction ofR
as ag_algebra
doesn't remember the original free algebra, andR(y*x)
doesn't work.