From 7e18eb5ffa0b6d95a3ee9612627c7d4102dfb368 Mon Sep 17 00:00:00 2001 From: Khashayar Neshat <111620549+kneshat@users.noreply.github.com> Date: Tue, 9 Jul 2024 06:50:33 -0700 Subject: [PATCH 1/4] Add files via upload Adding an example to illustrate how real irreps are constructed from complex ones in the three different cases of FS=1, 0, and -1. --- examples/ex_SL(2,3).jl | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 examples/ex_SL(2,3).jl diff --git a/examples/ex_SL(2,3).jl b/examples/ex_SL(2,3).jl new file mode 100644 index 0000000..efed238 --- /dev/null +++ b/examples/ex_SL(2,3).jl @@ -0,0 +1,35 @@ +using SymbolicWedderburn +using PermutationGroups +import SymbolicWedderburn as SW + + +# Constructing SL(2,3) or binary tetrahedral group as a permutation group of 8 elements +gen1 = perm"(1,2,3,4)(5,6,7,8)" +gen2 = perm"(1,7,3,5)(2,6,4,8)" +gen3 = perm"(2,6,7)(4,8,5)" +MyGroup = PermGroup([gen1, gen2, gen3]) # SL(2,3) + +# Compute the character table +tbl = SW.CharacterTable(Rational{Int}, MyGroup) + +# Get irreducible characters +irreducible_chars = irreducible_characters(tbl) + +# Define multiplicities (for simplicity, use ones) +multiplicities = fill(1, length(irreducible_chars)) + +# Get real irreducible characters and their multiplicities +real_irreps, real_mults = SW.affordable_real(irreducible_chars, multiplicities) +# Print the Frobinus-Schur indicator of each complex irrep +using SymbolicWedderburn.Characters +for (i, χ) in enumerate(irreducible_characters(tbl)) + fs_indicator = Characters.frobenius_schur(χ) + println("Frobenius-Schur indicator of $χ: $fs_indicator") + println() +end +# Print characters of real irreps +println("Real Irreducible Characters:") +for irrep in real_irreps + println(irrep) +end +# Expected Result: χ does not change if its FS is 1. χ is doubled if its FS is -1. χ is added by another character if its FS is 0. \ No newline at end of file From dafd813001368b973d9190ff87f6645d8c8b4b08 Mon Sep 17 00:00:00 2001 From: Khashayar Neshat <111620549+kneshat@users.noreply.github.com> Date: Tue, 9 Jul 2024 14:27:18 -0700 Subject: [PATCH 2/4] Update ex_SL(2,3).jl --- examples/ex_SL(2,3).jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/ex_SL(2,3).jl b/examples/ex_SL(2,3).jl index efed238..3cc15b3 100644 --- a/examples/ex_SL(2,3).jl +++ b/examples/ex_SL(2,3).jl @@ -13,7 +13,7 @@ MyGroup = PermGroup([gen1, gen2, gen3]) # SL(2,3) tbl = SW.CharacterTable(Rational{Int}, MyGroup) # Get irreducible characters -irreducible_chars = irreducible_characters(tbl) +irreducible_chars = SW.irreducible_characters(tbl) # Define multiplicities (for simplicity, use ones) multiplicities = fill(1, length(irreducible_chars)) @@ -32,4 +32,4 @@ println("Real Irreducible Characters:") for irrep in real_irreps println(irrep) end -# Expected Result: χ does not change if its FS is 1. χ is doubled if its FS is -1. χ is added by another character if its FS is 0. \ No newline at end of file +# Expected Result: χ does not change if its FS is 1. χ is doubled if its FS is -1. χ is added by another character if its FS is 0. From 0161efd7e5441a25bcf068f582c4dc9a7f79db98 Mon Sep 17 00:00:00 2001 From: Khashayar Neshat <111620549+kneshat@users.noreply.github.com> Date: Tue, 9 Jul 2024 19:59:22 -0700 Subject: [PATCH 3/4] Update sa_basis.jl Distinguishing the construction of real-type and quaternion-type real characters. --- src/sa_basis.jl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/sa_basis.jl b/src/sa_basis.jl index 0403425..cc8b315 100644 --- a/src/sa_basis.jl +++ b/src/sa_basis.jl @@ -6,10 +6,14 @@ function affordable_real( mls_real = similar(multiplicities, 0) for (i, χ) in pairs(irreducible_characters) ι = Characters.frobenius_schur(χ) - if abs(ι) == 1 # real or quaternionic - @debug "real/quaternionic:" χ + if ι == 1 # real + @debug "real" χ push!(irr_real, χ) push!(mls_real, multiplicities[i]) + elseif ι == -1 # quaternion + @debug "quaterionic" χ + push!(irr_real, 2*χ) + push!(mls_real, multiplicities[i]/2) else # complex one... cχ = conj(χ) k = findfirst(==(cχ), irreducible_characters) From 5b257318909a85ae93751e5c1ad96b0e510ad650 Mon Sep 17 00:00:00 2001 From: Khashayar Neshat <111620549+kneshat@users.noreply.github.com> Date: Tue, 9 Jul 2024 20:09:03 -0700 Subject: [PATCH 4/4] Update ex_SL(2,3).jl --- examples/ex_SL(2,3).jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/ex_SL(2,3).jl b/examples/ex_SL(2,3).jl index 3cc15b3..1fd7144 100644 --- a/examples/ex_SL(2,3).jl +++ b/examples/ex_SL(2,3).jl @@ -15,8 +15,8 @@ tbl = SW.CharacterTable(Rational{Int}, MyGroup) # Get irreducible characters irreducible_chars = SW.irreducible_characters(tbl) -# Define multiplicities (for simplicity, use ones) -multiplicities = fill(1, length(irreducible_chars)) +# Define multiplicities (for simplicity, use twos, it should be even for quaternion-type irreps) +multiplicities = fill(2, length(irreducible_chars)) # Get real irreducible characters and their multiplicities real_irreps, real_mults = SW.affordable_real(irreducible_chars, multiplicities)