kalmarek / SymbolicWedderburn.jl

Amazing package to compute decompositions into irreducibles of explicit group representations and the Wedderburn decomposition for endomorphisms thereof!
MIT License
8 stars 4 forks source link

Correctly handle complex-irreducible characters of quaternionic type #83

Open kalmarek opened 2 weeks ago

kalmarek commented 2 weeks ago

@Khashayar-Neshat

This will require changes to https://github.com/kalmarek/SymbolicWedderburn.jl/blob/d1822f263ac84c402340ec34eeb8f132182dea64/src/sa_basis.jl#L1

kneshat commented 2 weeks ago

Here it is:

function affordable_real(
    irreducible_characters,
    multiplicities = fill(1, length(irreducible_characters)),
)
    irr_real = similar(irreducible_characters, 0)
    mls_real = similar(multiplicities, 0)
    for (i, χ) in pairs(irreducible_characters)
        ι = Characters.frobenius_schur(χ)
        if ι == 1 # real
            @debug "real" χ
            push!(irr_real, χ)
            push!(mls_real, multiplicities[i])
        elseif ι == -1 # quaternion
            @debug "real" χ
            push!(irr_real, 2*χ)
            push!(mls_real, multiplicities[i])
        else # complex one...
                cχ = conj(χ)
                k = findfirst(==(cχ), irreducible_characters)
                @assert k !== nothing
                @debug "complex" χ conj(χ) = irreducible_characters[k]
                if k > i # ... we haven't already observed a conjugate of
                @assert multiplicities[i] == multiplicities[k]
                push!(irr_real, χ + cχ)
                push!(mls_real, multiplicities[i])
             end

        end
    end

    return irr_real, mls_real
end

Do you want to distinguish between real $\chi$ of real-type and real $\chi$ of quaternion-type? I also do not understand the concept of multiplicities. Isn't it always one?

kalmarek commented 2 weeks ago

great, can you create a pull request and add a meaningful testcase for this?

kneshat commented 2 weeks ago

I was doing trial and error to realize how I need to proceed in github. I created two pull requests: one for changes in affordable_real and the other for adding an example. I clicked on "merge pull request" for the second request. Now, I do not know how to delete it. What should I do? I added that example to the example folder. I suspect you prefer to have that example in the test folder.

kalmarek commented 2 weeks ago

no need to do anything about it, closing pull requests is just fine ;)