Skip to content

Changing affordable_real and related tests - #86

Open
kneshat wants to merge 11 commits into
kalmarek:masterfrom
kneshat:master
Open

Changing affordable_real and related tests#86
kneshat wants to merge 11 commits into
kalmarek:masterfrom
kneshat:master

Conversation

@kneshat

@kneshat kneshat commented Jul 25, 2024

Copy link
Copy Markdown

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

kneshat commented Jul 25, 2024

Copy link
Copy Markdown
Author

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

@kalmarek

Copy link
Copy Markdown
Owner

@kneshat thanks, tests look good!

I'll squash and merge once the tests finish.

@kneshat

kneshat commented Aug 3, 2024

Copy link
Copy Markdown
Author

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

kalmarek commented Aug 3, 2024

Copy link
Copy Markdown
Owner

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

Comment thread test/sa_basis.jl
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
Copy Markdown
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

kalmarek commented Aug 9, 2024

Copy link
Copy Markdown
Owner

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
Copy Markdown
Owner

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

@kneshat

kneshat commented Apr 16, 2025

Copy link
Copy Markdown
Author

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

Sorry, I was busy with another project. Now, I come back and intend to work. Is there any major change since then that I should be aware of?

@kalmarek

Copy link
Copy Markdown
Owner

@kneshat sure, me too ;) no problem. I think there were hardly any significant changes in the package. I'd need to get back up to speed with the proposed changes though ;)

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