Opened 5 years ago
Closed 5 years ago
#21081 closed enhancement (fixed)
Cup product for cochains
Reported by:  vbraun  Owned by:  

Priority:  major  Milestone:  sage7.3 
Component:  algebraic topology  Keywords:  
Cc:  jhpalmieri, tscrim  Merged in:  
Authors:  Volker Braun  Reviewers:  Frédéric Chapoton, John Palmieri 
Report Upstream:  N/A  Work issues:  
Branch:  e2b36a3 (Commits, GitHub, GitLab)  Commit:  e2b36a38c7c9e45a03110e94446ff96b597c8606 
Dependencies:  Stopgaps: 
Description
It would be nice to have the cup product available for arbitrary cochains, without involving homology_vector_space_with_basis
. Of course its not welldefined on the level of cochains, but at least one could check that products are nonzero if there is torsion over ZZ etc.
There are potentially two places where to put it:
 Method of
Chain.Element
, then chains would need to know about their cell (sub)complex. Right now they don't reference their cell complex as far as I can see.
 Method
GenericCellComplex.cup_product(self, left_cochain, right_cochain)
. Then chains need to know their degree (dimension of cells). Right now they don't store their degree, although the documentation says that they must be of homogeneous degree.
Thoughts?
Change History (11)
comment:1 Changed 5 years ago by
comment:2 Changed 5 years ago by
What about splitting Chains
and Cochains
into separate parents? Of course its somehow the same thing but notation is different and people will probably be confused if there are cochain.boundary()
and chain.cup_product()
methods...
comment:3 Changed 5 years ago by
That sounds like a good idea.
comment:4 Changed 5 years ago by
 Branch set to u/vbraun/cup_product_for_cochains
comment:5 Changed 5 years ago by
 Commit set to 294aa8e7e3ea190683ae6ef96cdc6b645227b507
 Status changed from new to needs_review
New commits:
294aa8e  Split chains/cochains as separate parents and expose cup product

comment:6 Changed 5 years ago by
There is something wrong here (cochains should be chains in the OUTPUT):
+ def dual(self): + """ + Return the chains + + OUTPUT: + + The cochains of the same cells with the same base ring.
and also here (two blank lines is too much):
+ Integer. The dimension of the cells. + + EXAMPLES:: + + + sage: X = simplicial_complexes.Simplex(2)
comment:7 Changed 5 years ago by
 Commit changed from 294aa8e7e3ea190683ae6ef96cdc6b645227b507 to 54c27b4f8c38523d5b1d002c6291accd19e24f52
Branch pushed to git repo; I updated commit sha1. New commits:
54c27b4  Fix typo

comment:8 Changed 5 years ago by
 Branch changed from u/vbraun/cup_product_for_cochains to u/jhpalmieri/cup_product_for_cochains
comment:9 Changed 5 years ago by
 Commit changed from 54c27b4f8c38523d5b1d002c6291accd19e24f52 to e2b36a38c7c9e45a03110e94446ff96b597c8606
 Reviewers set to Frédéric Chapoton, John Palmieri
I made some trivial changes: fixed a few typos (like :class:`Cohains`
), added chains.py
to the reference manual, wrapped some long lines, and deleted some trailing whitespace. I'm happy with this, so positive review if my changes are okay.
New commits:
e2b36a3  trac 21081: fix a few typos, add chains.py to reference manual,

comment:11 Changed 5 years ago by
 Branch changed from u/jhpalmieri/cup_product_for_cochains to e2b36a38c7c9e45a03110e94446ff96b597c8606
 Resolution set to fixed
 Status changed from positive_review to closed
Using
Chain.Element
seems good to me. It doesn't look like theChains
class is used much, so I think we could add extra arguments to the__init__
method specifying the degree and the associated cell complex.(The
Chains
class could use other improvements, too, like a map to the associated chain complex.)