1
0
mirror of https://github.com/kalmarek/Groups.jl.git synced 2024-12-25 18:15:29 +01:00

fix the replace! function in case length(toreplace)= 1

This commit is contained in:
kalmar 2017-07-05 16:18:04 +02:00
parent 5a9d4b4bb6
commit 6c8591b1d4

View File

@ -310,6 +310,19 @@ end
function replace!(W::GWord, index, toreplace::GWord, replacement::GWord; check=true) function replace!(W::GWord, index, toreplace::GWord, replacement::GWord; check=true)
n = length(toreplace.symbols) n = length(toreplace.symbols)
if n == 0
return reduce!(W)
elseif n == 1
if check
@assert is_subsymbol(toreplace.symbols[1], W.symbols[index])
end
first = change_pow(W.symbols[index],
W.symbols[index].pow - toreplace.symbols[1].pow)
last = change_pow(W.symbols[index], 0)
else
if check if check
@assert is_subsymbol(toreplace.symbols[1], W.symbols[index]) @assert is_subsymbol(toreplace.symbols[1], W.symbols[index])
@assert W.symbols[index+1:index+n-2] == toreplace.symbols[2:end-1] @assert W.symbols[index+1:index+n-2] == toreplace.symbols[2:end-1]
@ -318,9 +331,9 @@ function replace!(W::GWord, index, toreplace::GWord, replacement::GWord; check=t
first = change_pow(W.symbols[index], first = change_pow(W.symbols[index],
W.symbols[index].pow - toreplace.symbols[1].pow) W.symbols[index].pow - toreplace.symbols[1].pow)
last = change_pow(W.symbols[index+n-1], last = change_pow(W.symbols[index+n-1],
W.symbols[index+n-1].pow - toreplace.symbols[end].pow) W.symbols[index+n-1].pow - toreplace.symbols[end].pow)
end
replacement = first * replacement * last replacement = first * replacement * last
splice!(W.symbols, index:index+n-1, replacement.symbols) splice!(W.symbols, index:index+n-1, replacement.symbols)