mirror of
https://github.com/kalmarek/Groups.jl.git
synced 2024-10-19 08:05:36 +02:00
move (==), hash, change_pow, inv
This commit is contained in:
parent
26eb8b35cb
commit
b130417a38
@ -16,33 +16,9 @@ type AutGroup <: Group
|
|||||||
objectGroup::Group
|
objectGroup::Group
|
||||||
generators::Vector{AutSymbol}
|
generators::Vector{AutSymbol}
|
||||||
end
|
end
|
||||||
(==)(s::AutSymbol, t::AutSymbol) = s.gen == t.gen && s.pow == t.pow
|
|
||||||
hash(s::AutSymbol, h::UInt) = hash(s.gen, hash(s.pow, hash(:AutSymbol, h)))
|
|
||||||
|
|
||||||
|
|
||||||
function change_pow(s::AutSymbol, n::Int)
|
|
||||||
if n == 0
|
|
||||||
return one(s)
|
|
||||||
end
|
|
||||||
symbol = s.ex.args[1]
|
|
||||||
if symbol == :ɛ
|
|
||||||
return flip_AutSymbol(s.ex.args[2], pow=n)
|
|
||||||
elseif symbol == :σ
|
|
||||||
return symmetric_AutSymbol(s.ex.args[2], pow=n)
|
|
||||||
elseif symbol == :ϱ
|
|
||||||
s.ex.args[2:end-1]
|
|
||||||
return rmul_AutSymbol(s.ex.args[2:end-1]..., pow=n)
|
|
||||||
elseif symbol == :λ
|
|
||||||
return lmul_AutSymbol(s.ex.args[2:end-1]..., pow=n)
|
|
||||||
elseif symbol == :id
|
|
||||||
return s
|
|
||||||
else
|
|
||||||
warn("Changing an unknown type of symbol! $s")
|
|
||||||
return AutSymbol(s.gen, n, s.ex, s.func)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
inv(f::AutSymbol) = change_pow(f, -f.pow)
|
|
||||||
|
|
||||||
function id()
|
function id()
|
||||||
return v -> v
|
return v -> v
|
||||||
@ -147,6 +123,36 @@ function (F::AutGroupElem)(v)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
hash(s::AutSymbol, h::UInt) = hash(s.gen, hash(s.pow, hash(:AutSymbol, h)))
|
||||||
|
|
||||||
|
function change_pow(s::AutSymbol, n::Int)
|
||||||
|
if n == 0
|
||||||
|
return one(s)
|
||||||
|
end
|
||||||
|
symbol = s.ex.args[1]
|
||||||
|
if symbol == :ɛ
|
||||||
|
return flip_autsymbol(s.ex.args[2], pow=n)
|
||||||
|
elseif symbol == :σ
|
||||||
|
return perm_autsymbol(s.ex.args[2], pow=n)
|
||||||
|
elseif symbol == :ϱ
|
||||||
|
s.ex.args[2:end-1]
|
||||||
|
return rmul_autsymbol(s.ex.args[2:end-1]..., pow=n)
|
||||||
|
elseif symbol == :λ
|
||||||
|
return lmul_autsymbol(s.ex.args[2:end-1]..., pow=n)
|
||||||
|
elseif symbol == :id
|
||||||
|
return s
|
||||||
|
else
|
||||||
|
warn("Changing an unknown type of symbol! $s")
|
||||||
|
return AutSymbol(s.gen, n, s.ex, s.func)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
(==)(s::AutSymbol, t::AutSymbol) = s.gen == t.gen && s.pow == t.pow
|
||||||
|
|
||||||
|
|
||||||
|
inv(f::AutSymbol) = change_pow(f, -f.pow)
|
||||||
|
|
||||||
function simplify_perms!(W::AutGroupElem)
|
function simplify_perms!(W::AutGroupElem)
|
||||||
reduced = true
|
reduced = true
|
||||||
for i in 1:length(W.symbols) - 1
|
for i in 1:length(W.symbols) - 1
|
||||||
|
Loading…
Reference in New Issue
Block a user