-
-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Description
this is my precompile workload:
import PrecompileTools
PrecompileTools.@setup_workload begin
struct Word{T}
alphabet::Vector{T}
letters::Vector{Int}
function Word(
a::AbstractVector{T},
l::AbstractVector{<:Integer},
) where {T}
all(i -> 1 <= i <= length(a), l) ||
throw(ArgumentError("Invalid word over alphabet $a: $l"))
return new{T}(a, l)
end
end
Base.show(io::IO, w::Word) = join(io, w.alphabet[w.letters], "·")
function Base.:(==)(w::Word, v::Word)
return w.alphabet == v.alphabet && w.letters == v.letters
end
function Base.hash(w::Word, h::UInt = UInt(0))
return hash(w.alphabet, hash(w.letters, hash(Word, h)))
end
struct OnLetters <: ByPermutations end
function action(::OnLetters, p::AP.AbstractPermutation, w::Word)
return Word(w.alphabet, [w.letters[i]^p for i in eachindex(w.letters)])
end
function allwords(A, radius)
words = [Word(A, [i]) for i in 1:length(A)]
for r in 2:radius
append!(
words,
[
Word(A, collect(w)) for
w in Iterators.product(fill(1:3, r)...)
],
)
end
return words
end
words = allwords([:a, :b, :c], 4)
act = OnLetters()
PrecompileTools.@compile_workload begin
G = PG.PermGroup(PG.perm"(1,2,3)", PG.perm"(1,2)")
wd = WedderburnDecomposition(Rational{Int}, G, act, words, words)
wdfl = WedderburnDecomposition(Float64, G, act, words, words)
end
endWith PercompileTools 1.2.1 things work as expected, on 1.3.3 (as well as on 1.3.1) I get method error:
Info Given SymbolicWedderburn was explicitly requested, output will be shown live
ERROR: LoadError: MethodError: no method matching action(::SymbolicWedderburn.OnLetters, ::PermutationGroups.Permutation{PermutationGroups.Perm{UInt16}, PermutationGroups.PermGroup{PermutationGroups.Perm{UInt16}, PermutationGroups.Transversal{UInt16, PermutationGroups.Perm{UInt16}}}}, ::SymbolicWedderburn.Word{Symbol})
The function `action` exists, but no method is defined for this combination of argument types.
Closest candidates are:
action(::SymbolicWedderburn.ByPermutations, ::AbstractPermutations.AbstractPermutation, ::AbstractVector)
@ SymbolicWedderburn ~/.julia/dev/SymbolicWedderburn/src/actions.jl:16
action(::SymbolicWedderburn.InducedActionHomomorphism{<:SymbolicWedderburn.ByLinearTransformation}, ::GroupsCore.GroupElement, ::AbstractVector)
@ SymbolicWedderburn ~/.julia/dev/SymbolicWedderburn/src/actions.jl:62
action(::SymbolicWedderburn.InducedActionHomomorphism{<:SymbolicWedderburn.ByPermutations}, ::GroupsCore.GroupElement, ::AbstractVector)
@ SymbolicWedderburn ~/.julia/dev/SymbolicWedderburn/src/actions.jl:31
...Here for some reason action(::OnLetters, p::AP.AbstractPermutation, w::Word) is not added to the methods of action.
The rest of the stack follows:
Stacktrace:
[1] induce(::SymbolicWedderburn.OnLetters, hom::SymbolicWedderburn.ExtensionHomomorphism{SymbolicWedderburn.OnLetters, SymbolicWedderburn.Word{Symbol}, StarAlgebras.Basis{SymbolicWedderburn.Word{Symbol}, UInt32, StarAlgebras.Basis{SymbolicWedderburn.Word{Symbol}, UInt32, Vector{SymbolicWedderburn.Word{Symbol}}}}}, g::PermutationGroups.Permutation{PermutationGroups.Perm{UInt16}, PermutationGroups.PermGroup{PermutationGroups.Perm{UInt16}, PermutationGroups.Transversal{UInt16, PermutationGroups.Perm{UInt16}}}})
@ SymbolicWedderburn ~/.julia/dev/SymbolicWedderburn/src/actions.jl:43
[2] induce
@ ~/.julia/dev/SymbolicWedderburn/src/ext_homomorphisms.jl:30 [inlined]
[3] SymbolicWedderburn.CachedExtensionHomomorphism(::Type{UInt32}, G::PermutationGroups.PermGroup{PermutationGroups.Perm{UInt16}, PermutationGroups.Transversal{UInt16, PermutationGroups.Perm{UInt16}}}, action::SymbolicWedderburn.OnLetters, basis::StarAlgebras.Basis{SymbolicWedderburn.Word{Symbol}, UInt32, Vector{SymbolicWedderburn.Word{Symbol}}}; precompute::Bool)
@ SymbolicWedderburn ~/.julia/dev/SymbolicWedderburn/src/ext_homomorphisms.jl:91
[4] CachedExtensionHomomorphism
@ ~/.julia/dev/SymbolicWedderburn/src/ext_homomorphisms.jl:83 [inlined]
[5] #CachedExtensionHomomorphism#5
@ ~/.julia/dev/SymbolicWedderburn/src/ext_homomorphisms.jl:109 [inlined]
[6] CachedExtensionHomomorphism
@ ~/.julia/dev/SymbolicWedderburn/src/ext_homomorphisms.jl:103 [inlined]
[7] SymbolicWedderburn.WedderburnDecomposition(T::Type, G::PermutationGroups.PermGroup{PermutationGroups.Perm{UInt16}, PermutationGroups.Transversal{UInt16, PermutationGroups.Perm{UInt16}}}, action::SymbolicWedderburn.OnLetters, basis_full::StarAlgebras.Basis{SymbolicWedderburn.Word{Symbol}, UInt32, Vector{SymbolicWedderburn.Word{Symbol}}}, basis_half::StarAlgebras.Basis{SymbolicWedderburn.Word{Symbol}, UInt32, Vector{SymbolicWedderburn.Word{Symbol}}}, S::Type; semisimple::Bool)
@ SymbolicWedderburn ~/.julia/dev/SymbolicWedderburn/src/wedderburn_decomposition.jl:65
[8] WedderburnDecomposition
@ ~/.julia/dev/SymbolicWedderburn/src/wedderburn_decomposition.jl:53 [inlined]
[9] SymbolicWedderburn.WedderburnDecomposition(T::Type, G::PermutationGroups.PermGroup{PermutationGroups.Perm{UInt16}, PermutationGroups.Transversal{UInt16, PermutationGroups.Perm{UInt16}}}, action::SymbolicWedderburn.OnLetters, basis_full::Vector{SymbolicWedderburn.Word{Symbol}}, basis_half::Vector{SymbolicWedderburn.Word{Symbol}}, S::Type; semisimple::Bool)
@ SymbolicWedderburn ~/.julia/dev/SymbolicWedderburn/src/wedderburn_decomposition.jl:42
[10] WedderburnDecomposition
@ ~/.julia/dev/SymbolicWedderburn/src/wedderburn_decomposition.jl:33 [inlined]
[11] SymbolicWedderburn.WedderburnDecomposition(T::Type, G::PermutationGroups.PermGroup{PermutationGroups.Perm{UInt16}, PermutationGroups.Transversal{UInt16, PermutationGroups.Perm{UInt16}}}, action::SymbolicWedderburn.OnLetters, basis_full::Vector{SymbolicWedderburn.Word{Symbol}}, basis_half::Vector{SymbolicWedderburn.Word{Symbol}})
@ SymbolicWedderburn ~/.julia/dev/SymbolicWedderburn/src/wedderburn_decomposition.jl:33
[12] macro expansion
@ ~/.julia/dev/SymbolicWedderburn/src/precompile.jl:50 [inlined]
[13] macro expansion
@ ~/.julia/packages/PrecompileTools/gn08A/src/workloads.jl:73 [inlined]
[14] macro expansion
@ ~/.julia/dev/SymbolicWedderburn/src/precompile.jl:48 [inlined]
[15] macro expansion
@ ~/.julia/packages/PrecompileTools/gn08A/src/workloads.jl:121 [inlined]
[16] top-level scope
@ ~/.julia/dev/SymbolicWedderburn/src/precompile.jl:118
[17] include(mapexpr::Function, mod::Module, _path::String)
@ Base ./Base.jl:306
[18] top-level scope
@ ~/.julia/dev/SymbolicWedderburn/src/SymbolicWedderburn.jl:46
[19] include(mod::Module, _path::String)
@ Base ./Base.jl:305
[20] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)
@ Base ./loading.jl:2997
[21] top-level scope
@ stdin:5
[22] eval(m::Module, e::Any)
@ Core ./boot.jl:489
[23] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)
@ Base ./loading.jl:2843
[24] include_string
@ ./loading.jl:2853 [inlined]
[25] exec_options(opts::Base.JLOptions)
@ Base ./client.jl:319
[26] _start()
@ Base ./client.jl:554
in expression starting at /home/kalmar/.julia/dev/SymbolicWedderburn/src/precompile.jl:3
in expression starting at /home/kalmar/.julia/dev/SymbolicWedderburn/src/SymbolicWedderburn.jl:1
in expression starting at stdin:5
✗ SymbolicWedderburn
For leading issue see: kalmarek/SymbolicWedderburn.jl#94
Metadata
Metadata
Assignees
Labels
No labels