-
-
Notifications
You must be signed in to change notification settings - Fork 480
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
The Fusion Ring of the Drinfeld Double of a Finite Group #35387
Conversation
…y into fusion_double.py
One linter (see checks) is not happy about some import and about not using |
and the pycodestyle linter complains too |
pycodestyle is not yet satisfied ; look at any other file in sage to see how the files must finish |
The codecov/project reported coverage failures are mostly related to the base correlation. When the F-matrix is calculated, the FusionDouble acquires an attribute called _basecoer, which is a coercion into the fvars_field, which is the field containing the F-matrix values. If this attribute is not None, then for every calculation, such as a call to s_matrix, the output is coerced into the fvars_field. These coercions are not tested by the existing doctests. The same is true for the coercions in fusion_ring.py. |
I wouldn't worry about the codecov stuff. I find it highly annoying/intrusive and would love to apply fire and holy water to it. |
I had two failures on both my two linux boxes, and also the bot was unhappy. The output was similar to MacOS. The backtrace begins with a KeyError, in both cases. I spent some time trying to figure out what was going on, gave up, and just took the test out. It seems to me that the purpose of the discussion in the docstring is to tell the user how to proceed. |
It isn't just telling the user how to proceed, but to also have something in place to indicate when the documentation might become out of date. For instance, it seems to be easy enough to implement a centralizer method for matrix groups: sage: G = groups.matrix.GL(2,3)
sage: C = G._libgap_().Centralizer(G.random_element()); C
<group of 2x2 matrices over GF(3)>
sage: G.subgroup([matrix(M.sage()) for M in C.List()])
Subgroup with 4 generators (
[1 0] [0 1] [2 0] [0 2]
[0 1], [1 0], [0 2], [2 0]
) of General Linear Group of degree 2 over Finite Field of size 3 (with some care for making sure the group is finite). GAP supports it some level of generality too: https://docs.gap-system.org/doc/ref/chap35.html#X7A2BF4527E08803C So with such a PR, I might fix the failure for matrix groups. The fact that you are getting a very different failure is also concerning. Are you running the latest beta version? Can you post what the error message is? (I don't know how to see the old bot report.) |
Implementing the centralizers is now #35540. |
With #35540 , I can now construct the |
That's fine with me. We can potentially add it back in during the refactor PR #35540 is not done approved |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you. LGTM. Anything further we can do on the refactoring ticket.
sage: f10.g() | ||
(1,2,3,4,5) | ||
sage: f10.char() | ||
Character of Subgroup generated by [(1,2,3,4,5)] of (Dihedral group of order 10 as a permutation group) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd suggest to break long output lines like this one so that the example can be read in the HTML documentation without need for horizontal scrolling
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd suggest to break long output lines like this one so that the example can be read in the HTML documentation without need for horizontal scrolling
OK, I did this in commit c9c532d.
pycodestyle complains about trailing whitespace |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you, looking good.
Documentation preview for this PR is ready! 🎉 |
📚 Description
This code is very similar to the existing FusionRing class. Both FusionRing and the new FusionDouble classes implement Fusion Rings of Modular Tensor Categories, important in conformal field theory and related quantum math. The FusionDouble is the fusion ring of the Drinfeld double of a finite group. It has methods corresponding to fusion, S-matrix, twists of simple elements, quantum dimension. An interface is provide to the F-matrix code, but due to the fact that the number of simple objects is fairly large even for fairly small groups, the F-matrix code is only confirmed to work for very small group such as Z_2 and S_3. Apart from the F-matrix code, the code works for Drinfeld doubles of moderate size, tested for example on groups of order 16, and the simple groups A5 and GL(3,2) of orders 60 and 168.
A prototype of this code by Wenqi Li is here: https://github.com/enqiLi/drinfeld_doubles
Work issues:
*The code would benefit from refactoring with the existing FusionRing code. It is proposed that we skip this since the existing code works well.
*The Drinfeld double can be twisted by a 3-cocycle for H^3(G). This may be implemented in a later PR.
📝 Checklist
⌛ Dependencies