make AutS an argument of compute_orbit_data

This commit is contained in:
kalmar 2017-06-08 20:05:43 +02:00
parent fbfa968e78
commit f9127c59b4
2 changed files with 10 additions and 13 deletions

View File

@ -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

View File

@ -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]