diff --git a/Orb_AutFN.jl b/Orb_AutFN.jl index 121a5bd..91ed676 100644 --- a/Orb_AutFN.jl +++ b/Orb_AutFN.jl @@ -194,14 +194,14 @@ function SOutFN_generating_set(logger, name::String, N::Int) end function init_orbit_data{T<:Nemo.GroupElem}(logger, name::String, G::Nemo.Group, - S::Vector{T}; radius=2) + S::Vector{T}, AutS::Nemo.Group; radius=2) ex(fname) = isfile(joinpath(name, fname)) files_exists = ex.(["delta.jld", "pm.jld", "U_pis.jld", "orbits.jld"]) if !all(files_exists) - compute_orbit_data(logger, name, SOutFN, S, radius=radius) + compute_orbit_data(logger, name, SOutFN, S, AutS, radius=radius) end return 0 diff --git a/OrbitDecomposition.jl b/OrbitDecomposition.jl index 8694dbb..6a43211 100644 --- a/OrbitDecomposition.jl +++ b/OrbitDecomposition.jl @@ -157,7 +157,8 @@ function Uπ_matrices(P_matrices; orth=orthSVD) return U_p_matrices end -function compute_orbit_data{T<:GroupElem}(logger, name::String, G::Group, S::Vector{T}; radius=2) + +function compute_orbit_data{T<:GroupElem}(logger, name::String, G::Group, S::Vector{T}, AutS; radius=2) isdir(name) || mkdir(name) info(logger, "Generating ball of radius 4") @@ -173,30 +174,26 @@ function compute_orbit_data{T<:GroupElem}(logger, name::String, G::Group, S::Vec save(joinpath(name, "delta.jld"), "Δ", Δ.coeffs) save(joinpath(name, "pm.jld"), "pm", pm) - N = length(G.objectGroup.gens) - info(logger, "WreathProduct") - @time BN = WreathProduct(Nemo.FiniteField(2,1, "a")[1], PermutationGroup(N)) - - info(logger, "Decomposing E into orbits of B$(N)") - @time orbs = orbit_decomposition(BN, E4, E_dict) + info(logger, "Decomposing E into orbits of $(Aut_S)") + @time orbs = orbit_decomposition(AutS, E4, E_dict) @assert sum(length(o) for o in orbs) == length(E4) save(joinpath(name, "orbits.jld"), "orbits", orbs) info(logger, "Action matrices") E2 = E4[1:sizes[radius]] - @time BNactionE_mreps = [matrix_repr(g, E2, E_dict) for g in elements(BN)] + @time AutS_matrixreps = [matrix_repr(g, E2, E_dict) for g in elements(AutS)] info(logger, "Projections") - @time BN_mps = rankOne_projections(BN); + @time AutS_mps = rankOne_projections(AutS); - @time π_E_projections = [Cstar_repr(p, BNactionE_mreps) for p in BN_mps] + @time π_E_projections = [Cstar_repr(p, AutS_matrixreps) for p in AutS_mps] info(logger, "Uπs...") @time Uπs = Uπ_matrices(π_E_projections); multiplicities = [size(U,2) for U in Uπs]; info(logger, "multiplicities = $multiplicities") - dimensions = [Int(p[BN()]*Int(order(BN))) for p in BN_mps]; + dimensions = [Int(p[AutS()]*Int(order(AutS))) for p in AutS_mps]; info(logger, "dimensions = $dimensions") @assert dot(multiplicities, dimensions) == sizes[radius]