Details about the blocks after symmetry reduction or Wedderburn decomposition

For each irreducible representation, I want to know its degree and the number of times it occurs in the Wedderburn decomposition of the underlying algebra of equivariant maps using SymbolicWedderburn.jl . I also want to know what basis is chosen from the block diagonalization of the corresponding Gram matrix.

Here is my script:

using SymbolicWedderburn
using PermutationGroups
using DynamicPolynomials

include(joinpath("C:\\Users\\raven\\.julia\\packages\\SymbolicWedderburn\\lbiby\\examples\\action_polynomials.jl"))

const N = 8
@polyvar x[1:N]
f = sum(x.^4) + sum(x[i]^2 * x[j]^2 for i in 1:8 for j in i+1:8)+1
MyGroup=PermGroup([perm"(1,2,4,7)(3,6,8,5)", perm"(1,3,4,8)(2,5,7,6)"])
MyAction=VariablePermutation(x)


max_deg = DynamicPolynomials.maxdegree(f)
basis_full = DynamicPolynomials.monomials(x, 0:max_deg)
basis_half = DynamicPolynomials.monomials(x, 0:max_deg÷2)

wd = WedderburnDecomposition(Float64, MyGroup, MyAction, basis_full, basis_half)
function get_irrep_degrees(wd::WedderburnDecomposition)
    ds = direct_summands(wd)
    return SymbolicWedderburn.degree.(ds)
end

# Output components
#println("Basis: ", wd.basis)
#println("Invariant Vectors: ", wd.invariants)
#println("Direct Summands: ", wd.Uπs)
#println("Homomorphism: ", wd.hom)
println("Degrees of irreducible representations: ", get_irrep_degrees(wd))
println(wd)

and here is the result:

Degrees of irreducible representations: [1, 1, 1, 1, 2]
Wedderburn Decomposition into 66 orbits and 5 summands of sizes
[7, 6, 6, 6, 20]

My questions:

1- How should I understand each block corresponds to which irrep? Here I have 3 blocks of size 6. Does each block correspond to each irrep, or two blocks correspond to one irrep of degree 2? I am not asking for this specific question, I am asking this in general.

2- Here the underlying group is the quaternion group Q8. This group has irrep of degree [1,1,1,1,2] over \mathbb{C} and degree [1,1,1,1,4] over \mathbb{R}. I thought your package considered irreps over reals, but it seems it considers irrep over complex numbers due to the result. Is that so?

3- The basis is a monomial basis before symmetry reduction. How can I extract the basis after symmetry reduction?

Thank you @abulak

please open an issue on github.

Are you sure? Here, I just asked questions for my understanding, and I did not report any problem. I am not very familiar with issues on github. If I want to get more information about a variable or function, is it fine to open an issue on github?

Well, I set the rules for my repositories :wink:
The package lacks documentation badly, so instead of explaining stuff here I prefer to turn those into issues which may result in doc(strings).

1 Like