Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement twisted homology of simplicial sets. #36691

Merged
merged 13 commits into from
Dec 10, 2023

Conversation

miguelmarco
Copy link
Contributor

@miguelmarco miguelmarco commented Nov 10, 2023

Right now we can compute universal covers of simplicial sets if the fundamental group is finite. This PR implements
twisted homology with respect to the abelianization character.

In particular, if the fundamental group is abelian, this gives modules whose underlying additive group are isomorphic to the homology groups of the universal cover.

Addresses #36690

📝 Checklist

  • The title is concise, informative, and self-explanatory.
  • The description explains in detail what this PR is about.
  • I have linked a relevant issue or discussion.
  • I have created tests covering the changes.
  • I have updated the documentation accordingly.

Multivariate Laurent Polynomial Ring in f2, f3 over Integer Ring
sage: Y = simplicial_sets.RealProjectiveSpace(2)
sage: Y._canonical_twisting_operator()
{f: F1bar}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps delete lines 600 and 601, since they're covered in 603-604.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before the changes in universal_cover_dict, these two examples behaved differently (the hashes of the simplices in the n-skeleton of a wedge didn't necessarily match the ones in the total space).

I think it is good to have a test that makes sure that that problem is solved.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm talking about (a) a line that evaluates Y._canonical_twisting_operator() as compared to (b) a line that does d2 = Y._canonical_twisting_operator() and then evaluates d2. Are you saying that those behaved differently? If so, it would be good to add a comment explaining that, or else someone may come along later, not understand their purpose, and delete those tests.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh sorry, you are right. What worked differently was the example with X. The lines you mention are indeed unnecessarily duplicated.

@jhpalmieri
Copy link
Member

My first impression is that it adds important functionality to Sage, and it looks good. Should K.twisted_homology(n) (etc.) exit gracefully if K is simply connected? Right now I just get an error; should it just return the ordinary homology? Should _canonical_twisting_operator return a trivial operator, assigning 1 to each edge?

@jhpalmieri
Copy link
Member

I have a design question: when I wrote the initial simplicial set code, I set it up so that fundamental_group was only available to pointed simplicial sets. Mathematically this is certainly the right thing to do, but should Sage be sloppier and (for example) if the simplicial set is path connected, choose an arbitrary base point?

This would allow moving some methods around between files, and it might make it possible to unify twisted_chain_complex with chain_complex — chain_complex could just take an optional argument for the twisting operator.

None of this would necessarily be done on this PR, but is it worth thinking about, or should we keep it as is?

src/sage/categories/simplicial_sets.py Outdated Show resolved Hide resolved
src/sage/categories/simplicial_sets.py Outdated Show resolved Hide resolved
src/sage/categories/simplicial_sets.py Outdated Show resolved Hide resolved
src/sage/categories/simplicial_sets.py Show resolved Hide resolved
src/sage/categories/simplicial_sets.py Show resolved Hide resolved
src/sage/categories/simplicial_sets.py Show resolved Hide resolved
Copy link
Contributor

@enriqueartal enriqueartal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are some small comments.

@vbraun
Copy link
Member

vbraun commented Dec 4, 2023

merge conflict

Copy link

github-actions bot commented Dec 7, 2023

Documentation preview for this PR (built with commit 82bea65; changes) is ready! 🎉

@miguelmarco
Copy link
Contributor Author

merge conflict

Fixed.

@vbraun vbraun merged commit d98153d into sagemath:develop Dec 10, 2023
17 of 18 checks passed
@mkoeppe mkoeppe added this to the sage-10.3 milestone Dec 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants