selection of PropertyTGroup happens inside PropertyTGroups

This commit is contained in:
kalmarek 2018-09-05 17:53:26 +02:00
parent e02b410240
commit 385d2d4f5e

View File

@ -1,31 +1,51 @@
module PropertyTGroups module PropertyTGroups
using PropertyT
using AbstractAlgebra using AbstractAlgebra
using Nemo using Nemo
using Groups using Groups
export PropertyTGroup, SymmetrizedGroup, GAPGroup, Naive, Symmetrize, export PropertyTGroup, SymmetrizedGroup, GAPGroup,
SpecialLinearGroup, SpecialLinearGroup,
SpecialAutomorphismGroup, SpecialAutomorphismGroup,
HigmanGroup, HigmanGroup,
CapraceGroup, CapraceGroup,
MappingClassGroup MappingClassGroup
export PropertyTGroup
abstract type PropertyTGroup end abstract type PropertyTGroup end
abstract type SymmetrizedGroup <: PropertyTGroup end abstract type SymmetrizedGroup <: PropertyTGroup end
abstract type GAPGroup <: PropertyTGroup end abstract type GAPGroup <: PropertyTGroup end
struct Symmetrize end function PropertyTGroup(args)
struct Naive end if haskey(args, "SL")
G = PropertyTGroups.SpecialLinearGroup(args)
elseif haskey(args, "SAut")
G = PropertyTGroups.SpecialAutomorphismGroup(args)
elseif haskey(args, "MCG")
G = PropertyTGroups.MappingClassGroup(args)
elseif haskey(args, "Higman")
G = PropertyTGroups.HigmanGroup(args)
elseif haskey(args, "Caprace")
G = PropertyTGroups.CapraceGroup(args)
else
throw("You must provide one of --SL, --SAut, --MCG, --Higman, --Caprace")
end
return G
end
include("autfreegroup.jl") include("autfreegroup.jl")
include("speciallinear.jl") include("speciallinear.jl")
Comm(x,y) = x*y*x^-1*y^-1 Comm(x,y) = x*y*x^-1*y^-1
generatingset(G::GAPGroup) = gens(group(G)) function generatingset(G::GAPGroup)
S = gens(group(G))
return unique([S; inv.(S)])
end
include("mappingclassgroup.jl") include("mappingclassgroup.jl")
include("higman.jl") include("higman.jl")