Skip to content

Conversation

@borisdevos
Copy link
Member

@borisdevos borisdevos commented Nov 14, 2025

This PR adds the representations of A_N for 0 < N < 5. In particular, RepA4 has a generic fusion style, which is currently untested in TensorKit.

This PR adds the representations of the alternating group of degree 4, providing a sector with generic fusion style.

Credits to @lkdvos for several parts of this PR.

@github-actions
Copy link

github-actions bot commented Nov 14, 2025

Your PR no longer requires formatting changes. Thank you for your contribution!

@codecov
Copy link

codecov bot commented Nov 14, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.

Files with missing lines Coverage Δ
src/TensorKitSectors.jl 16.66% <ø> (ø)
src/groups.jl 45.71% <100.00%> (+1.59%) ⬆️
src/irreps/a4irrep.jl 100.00% <100.00%> (ø)
src/irreps/irreps.jl 96.55% <ø> (ø)

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Member

@lkdvos lkdvos left a comment

Choose a reason for hiding this comment

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

Looks like a great start!

In general it looks like most of the implementations really assume N = 4 and are not at all expected to work for anything else, this is completely fine, but the signatures should then be made more specific as well.

@borisdevos borisdevos marked this pull request as ready for review November 18, 2025 15:46
@lkdvos
Copy link
Member

lkdvos commented Nov 28, 2025

So, I read a bit more about the representation theory of the alternating groups, and there are a couple points that I want to revisit.

The first is that if we want this to really be ANIrrep, I don't think using a single integer is actually a very convenient labeling system.
Since we really want to derive the irreps from the symmetric group, using partitions of N seems a bit more natural, with the addition that the self-conjugate irreps appear twice, while the non-self-conjugate ones appear only once.
It could therefore in principle make sense to use N integers and a flag, but in reality it seems like we are then needlessly complicating things, since I don't think we will have arbitrary N, or a need for it, in the near future.

Therefore I would kind of like to suggest an alternative, where we simply define A4Irrep directly, instead of ANIrrep. Since I don't think there is much value to having N < 4, and I don't think we have an idea of an automated way of doing arbitrary N, I feel like we might just protect ourself from future breaking changes by just hardcoding a struct for N = 4.

I'm happy to have a go at this tomorrow if you don't object to this.

@Jutho
Copy link
Member

Jutho commented Nov 28, 2025

I have also been wondering about this and fully agree with Lukas' analysis, and the decision of simply restricting to A4Irrep

@borisdevos
Copy link
Member Author

Seems reasonable. Feel free to go for it!

@lkdvos lkdvos mentioned this pull request Nov 30, 2025
@borisdevos borisdevos changed the title Representations of alternating group Representations of alternating group of degree 4 Dec 3, 2025
Co-authored-by: Lukas Devos <[email protected]>
@borisdevos
Copy link
Member Author

I will add the intertwiner test tomorrow :)

@lkdvos
Copy link
Member

lkdvos commented Dec 10, 2025

That's actually really cool that just works, thanks for implementing!
The only remark I have is that this for now probably is better suited out of the test suite, as the if statement before the macro isnt really how the @testsuite operates, so I'd simply add a @testset with these instead? (I'm not sure if currently your added test is actually running)

Copy link
Member

@lkdvos lkdvos left a comment

Choose a reason for hiding this comment

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

Thanks for the work, this PR looks great to me!
@Jutho, do you have any opinions about choosing the symmetric or antisymmetric channel first? Do we know if there are any conventions around this, or can we really just pick freely?
If so, I'd be happy to merge and tag this!

Base.hash(a::A4Irrep, h::UInt) = hash(a.n, h)
Base.convert(::Type{A4Irrep}, n::Integer) = A4Irrep(n)

Base.getindex(::IrrepTable, ::Type{A₄}) = A4Irrep
Copy link
Member

Choose a reason for hiding this comment

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

Note that here you could in principle also register the lower order alternating group versions, something like

Base.getindex(::IrrepTable, ::Type{Alternating{3}}) = ZNIrrep{3}

though that might be more confusing than helpful?

Copy link
Member Author

Choose a reason for hiding this comment

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

Even though I started with including the lower degree groups, and whether or not it's confusing or helpful, I don't think that making these identifications is particularly useful.

@Jutho
Copy link
Member

Jutho commented Dec 10, 2025

Thanks for the work, this PR looks great to me! @Jutho, do you have any opinions about choosing the symmetric or antisymmetric channel first? Do we know if there are any conventions around this, or can we really just pick freely? If so, I'd be happy to merge and tag this!

I don't know if there is any convention. I am actually not really familiar with the representation theory of A4. So I don't have strong opinions. Is this something @lalooten knows more about?

@lkdvos
Copy link
Member

lkdvos commented Dec 11, 2025

Had a quick chat with @lalooten, seems like there isn't really any convention to keep in mind, so I will merge and release this as it is now. Thanks again @borisdevos !

@lkdvos lkdvos merged commit 7dbe071 into main Dec 11, 2025
9 checks passed
@lkdvos lkdvos deleted the bd/repa4 branch December 11, 2025 13:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants