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

Changing affordable_real and related tests #86

Open
wants to merge 11 commits into
base: master
Choose a base branch
from

Conversation

kneshat
Copy link

@kneshat kneshat commented Jul 25, 2024

Now, runtest.jl works without any error.
I made some changes which are as follows:
1- Modifying affordable_real function to cover quaternionic characters.
2- Modifying @testset "affordable real degrees/dot" to accommodate affordable_real.
3- Modifying @testset "Orthogonality of projections" to accommodate affordable_real.
4- Removing ex_SL(2,3).jl

kneshat added 9 commits July 9, 2024 06:50
Adding an example to illustrate how real irreps are constructed from complex ones in the three different cases of FS=1, 0, and -1.
Adding quaternionic real characters
Changing `@testset "affordable real degrees/dot"` base on new `function affordable_real`
adding a test for doubling the quaternionic characters
@kneshat
Copy link
Author

kneshat commented Jul 25, 2024

I also added a test in projections.jl based on the group SL(2,3) for doubling the quaternionic characters.

@kalmarek
Copy link
Owner

@kneshat thanks, tests look good!

I'll squash and merge once the tests finish.

@kneshat
Copy link
Author

kneshat commented Aug 3, 2024

I am wondering why tests do not work here, while "runtest.jl" works fine.
Can it relate to the warning Warning: Possibly wrong rank estimate? (numerical) 4 ≠ 2 (expected) @ SymbolicWedderburn C:\Users\raven\.julia\packages\SymbolicWedderburn\lbiby\src\image_basis.jl:124 that I get?

Would you also run the branch kneshat/correcting-issimple? How can I consider merging this new branch in this pull request?

@kalmarek
Copy link
Owner

kalmarek commented Aug 3, 2024

here I need to approve tests to run, since CI services have been abused to perform computations unrelated to the package.

test/sa_basis.jl Outdated
@@ -157,7 +157,8 @@ end
for b in sa_basisR
if issimple(b)
@test multiplicity(b) == size(b, 1) ||
2 * multiplicity(b) == size(b, 1)
2 * multiplicity(b) == size(b, 1) ||
4 * multiplicity(b) == size(b, 1)
# the first condiditon doesn't hold for realified characters;
Copy link
Owner

Choose a reason for hiding this comment

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

we should check the Frobenius Schur indicator here and test exactly that issimple really does what we want

@kalmarek
Copy link
Owner

kalmarek commented Aug 9, 2024

replying here to your comment (#82 (comment)) to keep the discussion related to PR in one place:

using frobenius_schur(b.character) for b in sa_basisR does not work since not all b.character are irreducible in the sense that you defined with the function isirreducible. My two first questions are: did you define isirreducible only for complex characters? What is the difference between issimple and isirreducible?

Now, I am wondering if I need to modify this function so that we can define frobenius_schur for irreducible real characters or not. In theory, frobenius_schur has a meaning for any ground field K that makes K G semisimple. This indicator relates to the possibility that the underlying irrep (not necessarily complex) accepts invariant symmetric bilinear forms and invariant skew-symmetric bilinear forms.

Do you have any other suggestion instead of checking frobenius_schur(b.character)? So that we can proceed without modifying isirreducible and frobenius_schur

issimple refers to DirectSummands (I'm no longer sure this is a good name, but this renaming is a separate issue #77), whereas isirreducible is defined for Characters only.


fair point with the irreducibility of characters! In the suggestion above I forgot that we already have realified the character. Taking a step back: what I want is a set of tests that will test precisely what we mean by issimple, now that we're changing its definition.


we have essentially three cases with three different meanings of issimple that need to be checked.

  • the standard case -- isirreducible(b.character)
  • sum of two different conjugates --
     mult = Characters.multiplicities(b.character)
     !isirreducible(b.character) && count(!iszero, mult) == 2 && all(m->m in (0,1), mult)
    Alternatively
     k = findfirst(!iszero, mult)
     χ = Character(table(b.character), k)
     χc = conj(χ) 
     χ  χc && b.character == χ + χc
  • a double of self-conjugate character
     mult = Characters.multiplicities(b.character)
     k = findfirst!(!iszero, mult)
     b.character == 2Character(table(b.character), k)

We could wrap those checks in small functions within the testset and use them there e.g.

if isirreducible(b.character)
    @test multiplicity(b) == size(b, 1)
elseif _is_irr_plus_conj(b.character)
    @test 2*multiplicity(b) == size(b, 1)
elseif _is_quaternionic_double(b.character)
    @test 4*multiplicity(b) == size(b, 1)
else
    throw("Unexpected character associated to a direct summand")
end

or something along those lines

@kalmarek
Copy link
Owner

@kneshat do you intend to work on this further, or should I carry those changes over the finish line?

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.

2 participants