diff --git a/src/ext_homomorphisms.jl b/src/ext_homomorphisms.jl index f103534..a3f6170 100644 --- a/src/ext_homomorphisms.jl +++ b/src/ext_homomorphisms.jl @@ -17,11 +17,14 @@ PermutationGroups.degree(hom::InducedActionHomomorphism) = length(basis(hom)) coeff_type(hom::InducedActionHomomorphism) = coeff_type(action(hom)) _int_type(::Type{<:StarAlgebras.AbstractBasis{T,I}}) where {T,I} = I -_int_type(hom::InducedActionHomomorphism) = _int_type(typeof(basis(hom))) +_int_type(basis::StarAlgebras.AbstractBasis) = _int_type(typeof(basis)) +_int_type(hom::InducedActionHomomorphism) = _int_type(basis(hom)) + +# Exceeding typemax(UInt32) here would mean e.g. that you're trying to block-diagonalize +# an SDP constraint of size 4_294_967_295 × 4_294_967_295, which is highly unlikely ;) +_int_type(::Type{<:Action}) = UInt32 +_int_type(ac::Action) = _int_type(typeof(ac)) -# Exceeding typemax(UInt16) here would mean e.g. that you're trying to block-diagonalize -# an SDP constraint of size 65535×65535, which is highly unlikely ;) -_int_type(::Type{<:InducedActionHomomorphism}) = UInt16 function induce(hom::InducedActionHomomorphism, g::GroupElement) return induce(action(hom), hom, g) @@ -43,7 +46,7 @@ end function ExtensionHomomorphism(action::Action, basis) return ExtensionHomomorphism( - _int_type(ExtensionHomomorphism), + _int_type(action), action, basis, ) @@ -104,7 +107,7 @@ function CachedExtensionHomomorphism( precompute = false, ) return CachedExtensionHomomorphism( - _int_type(ExtensionHomomorphism), + _int_type(action), G, action, basis; diff --git a/test/action_permutation.jl b/test/action_permutation.jl index f80dec5..ba7e0bb 100644 --- a/test/action_permutation.jl +++ b/test/action_permutation.jl @@ -68,7 +68,7 @@ end precompute = true, ) @test all(g ∈ keys(ehom.cache) for g in G) # we actually cached - @test typeof(SymbolicWedderburn.induce(ehom, one(G))) == Perm{UInt16} + @test typeof(SymbolicWedderburn.induce(ehom, one(G))) == Perm{UInt32} # the default ψ = SymbolicWedderburn.action_character(ehom, tbl) @test SymbolicWedderburn.constituents(ψ) == [40, 22, 18]