1
0
mirror of https://github.com/kalmarek/Groups.jl.git synced 2024-07-17 19:00:33 +02:00
Groups.jl/src/free_groups.jl
2017-01-24 12:30:45 +01:00

23 lines
572 B
Julia

import Base: convert
export FGSymbol, FGWord
immutable FGSymbol <: GSymbol
gen::String
pow::Int
end
(==)(s::FGSymbol, t::FGSymbol) = s.gen == t.gen && s.pow == t.pow
hash(s::FGSymbol, h::UInt) = hash(s.gen, hash(s.pow, hash(:FGSymbol, h)))
IdSymbol(::Type{FGSymbol}) = FGSymbol("(id)", 0)
FGSymbol(x::String) = FGSymbol(x,1)
convert(::Type{FGSymbol}, x::String) = FGSymbol(x)
change_pow(s::FGSymbol, n::Int) = (n==0 ? i=one(s) : FGSymbol(s.gen, n))
inv(s::FGSymbol) = change_pow(s, -s.pow)
typealias FGWord GWord{FGSymbol}
FGWord(s::FGSymbol) = FGWord([s])