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

Add headers

This commit is contained in:
kalmar 2017-05-12 20:11:10 +02:00
parent ffe0e901b2
commit 1fc4405b77

View File

@ -2,6 +2,12 @@ using Permutations
import Base: convert
###############################################################################
#
# AutSymbol/ AutGroup / AutGroupElem
#
###############################################################################
immutable AutSymbol <: GSymbol
gen::String
pow::Int
@ -18,11 +24,21 @@ end
export AutSymbol, AutGroupElem, AutGroup
###############################################################################
#
# Type and parent object methods
#
###############################################################################
elem_type(::AutGroup) = AutGroupElem
parent_type(::AutGroupElem) = AutGroup
###############################################################################
#
# AutSymbol defining functions
#
###############################################################################
function ϱ(i,j, pow=1)
# @assert i ≠ j
@ -85,6 +101,12 @@ function getperm(s::AutSymbol)
end
end
###############################################################################
#
# AutGroup / AutGroupElem constructors
#
###############################################################################
function AutGroup(G::FPGroup; outer=false, special=false)
length(G.rels) == 0 || throw("Don't know how to construct AutGroup of $G.")
n = length(G.generators)
@ -103,6 +125,11 @@ function AutGroup(G::FPGroup; outer=false, special=false)
return new(G, S)
end
###############################################################################
#
# Types call overloads
#
###############################################################################
function (f::AutSymbol){T}(v::Vector{GWord{T}})
if f.pow == 0
@ -118,6 +145,11 @@ function (F::AutGroupElem)(v)
return v
end
###############################################################################
#
# Basic manipulation
#
###############################################################################
hash(s::AutSymbol, h::UInt) = hash(s.gen, hash(s.pow, hash(:AutSymbol, h)))
@ -145,11 +177,40 @@ end
generators(G::AutGroup) = [G(AutGroupElem(elt)) for elt in G.generators]
###############################################################################
#
# String I/O
#
###############################################################################
###############################################################################
#
# Comparison
#
###############################################################################
(==)(s::AutSymbol, t::AutSymbol) = s.gen == t.gen && s.pow == t.pow
###############################################################################
#
# Binary operators
#
###############################################################################
###############################################################################
#
# Inversion
#
###############################################################################
inv(f::AutSymbol) = change_pow(f, -f.pow)
###############################################################################
#
# Misc
#
###############################################################################
function simplify_perms!(W::AutGroupElem)
reduced = true
for i in 1:length(W.symbols) - 1