-
Notifications
You must be signed in to change notification settings - Fork 124
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
[SymmetrySectors] Non-abelian fusion #1363
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rebase on latest GradedAxes set GradedAxes as a Sector dependency define fusion rules for simple categories pass test for simple categories
mtfishman
reviewed
Mar 25, 2024
mtfishman
reviewed
Mar 25, 2024
mtfishman
reviewed
Mar 25, 2024
mtfishman
reviewed
Mar 25, 2024
This comment was marked as outdated.
This comment was marked as outdated.
mtfishman
reviewed
Mar 25, 2024
mtfishman
reviewed
Mar 25, 2024
mtfishman
reviewed
Mar 25, 2024
mtfishman
reviewed
Mar 25, 2024
mtfishman
reviewed
Mar 25, 2024
mtfishman
reviewed
Mar 25, 2024
mtfishman
reviewed
Mar 25, 2024
mtfishman
reviewed
Mar 25, 2024
This comment was marked as resolved.
This comment was marked as resolved.
mtfishman
reviewed
Mar 28, 2024
mtfishman
reviewed
Mar 28, 2024
mtfishman
reviewed
Mar 28, 2024
mtfishman
reviewed
Oct 24, 2024
mtfishman
reviewed
Oct 24, 2024
mtfishman
reviewed
Oct 24, 2024
ogauthe
force-pushed
the
non-abelian_fusion
branch
from
October 24, 2024 15:17
0ca9ffc
to
798bd10
Compare
mtfishman
reviewed
Oct 24, 2024
mtfishman
reviewed
Oct 24, 2024
mtfishman
reviewed
Oct 24, 2024
mtfishman
reviewed
Oct 24, 2024
mtfishman
reviewed
Oct 24, 2024
mtfishman
reviewed
Oct 24, 2024
ogauthe
force-pushed
the
non-abelian_fusion
branch
from
October 24, 2024 19:27
496fa5a
to
900321a
Compare
mtfishman
reviewed
Oct 24, 2024
Alright, this looks good to go from my end and addresses the latest round of comments. @emstoudenmire, any final comments before I merge? |
Good to go from me. Looks very clean and I think it will be a powerful system! |
Thanks for sticking with the long review process @ogauthe! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a work in progress for a full implementation of non-abelian fusion rules in
Sectors
. It also contains several patches on other components ofSectors
. A core aspect is that the dependency order betweenGradedAxes
andSectors
has been reversed:Sectors
now depends onGradedAxes
.To do:
SectorProduct
fusion, which is implemented insectors_fusion_rule
. The code logic handled byrecover_style
/recover_sector_product_type
for handling different data formats (Tuple
vs.NamedTuple
, abelian vs. non-abelian) is still fairly complicated and hard to follow, we should try to simplify that.label_fusion_rule
toVector{<:Pair{<:AbstractSector,Int}}
.abelian_label_fusion_rule
that can be used for abelian groups as a simpler interface for defining fusion rules just in terms of the labels and without the need for specifying degeneracies/block lengths.label_fusion_rule
by default can callabelian_label_fusion_rule
and specify that there is one block of length 1.sectors(...)
toproduct_sectors(...)
for accessing the storage of aSectorProduct
. Additionally, rename functions that act onSectorProduct
storage fromsectors_*(...)
toproduct_sectors_*(...)
(for example, renamesectors_isless(...)
toproduct_sectors_isless(...)
).SectorProduct
equality so thatSectorProduct(SU2(1), U1(0)) == SectorProduct(SU2(1))
so that it returnstrue
(i.e. we should assume trailing trivial sectors, like the fusion code does), along with changing any other related corner cases of equality and inequality of category products.Sectors
toSymmetrySectors
.AbstractCategory
toAbstractSector
andCategoryProduct
toSectorProduct
(alsocategories
tosectors
throughout the code).struct TrivialSector <: AbstractSector end
, remove as many special code definitions forSectorProduct{Tuple{}}
andSectorProduct{NamedTuple{()}}
as possible.SectorProduct
.SymmetryStyle
trait with valuesAbelianGroup
,NonAbelianGroup
andNonGroupSymmetry
(this has been simplified to justAbelianStyle
andNotAbelianStyle
).tensor_product(a1::AbstractBlockedUnitRange, a2::AbstractBlockedUnitRange)
, ideally by removing or redesigningflatten_maybe_nested
, which may require redesigningfuse_blocklengths
to have more consistent outputs for abelian and non-abelian spaces.label_fusion_rule
to always output the same data format, i.e. a list of degeneracies and sectors, for both abelian and non-abelian symmetries.To be decided:
c1 ⊗ c2
: either always aGradedUnitRange
or aGradedUnitRange
or aCategory
depending onSymmetryStyle
SU2
andSU{2}
.Future PRs:
Decisions:
c1 ⊗ c2
: return type depends onSymmetryStyle
SU2
withSU{2}
and try to have a half-integer interface specific toSU{2}
Long term: how to handle braiding for fermions and anyons.