From 3ff1f1897e5fe4486f18128bc1f3dfd4880a60d9 Mon Sep 17 00:00:00 2001 From: kalmarek Date: Mon, 2 Apr 2018 18:18:12 +0200 Subject: [PATCH] =?UTF-8?q?fix=20simplify=5Fperms!=20=E2=86=92=20simplifyp?= =?UTF-8?q?erms!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently it passes twice over W.symbols, but should be correct --- src/AutGroup.jl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/AutGroup.jl b/src/AutGroup.jl index 1d0767a..4723084 100644 --- a/src/AutGroup.jl +++ b/src/AutGroup.jl @@ -329,8 +329,9 @@ function getperm(s::AutSymbol) end end -function simplify_perms!(W::Automorphism{N}) where N +function simplifyperms!(W::Automorphism{N}) where N reduced = true + to_delete = Int[] for i in 1:length(W.symbols)-1 if W.symbols[i].pow == 0 continue @@ -338,10 +339,11 @@ function simplify_perms!(W::Automorphism{N}) where N reduced = false c = W.symbols[i] n = W.symbols[i+1] - p = (getperm(c)*getperm(n)).d - W.symbols[i+1].typ.perm.d = p + W.symbols[i+1] = perm_autsymbol(getperm(c)*getperm(n)) + push!(to_delete, i) end end + deleteat!(W.symbols, to_delete) deleteids!(W) return reduced end @@ -349,13 +351,12 @@ end function reduce!(W::Automorphism) if length(W) == 0 return W - elseif length(W)< 2 - W.modified = true + elseif length(W.symbols) == 1 deleteids!(W) else reduced = false while !reduced - reduced = simplify_perms!(W) && free_reduce!(W) + reduced = simplifyperms!(W) && free_reduce!(W) end end