selection of PropertyTGroup happens inside PropertyTGroups

This commit is contained in:
kalmarek 2018-09-05 17:53:26 +02:00
parent e02b410240
commit 385d2d4f5e
1 changed files with 24 additions and 4 deletions

View File

@ -1,31 +1,51 @@
module PropertyTGroups
using PropertyT
using AbstractAlgebra
using Nemo
using Groups
export PropertyTGroup, SymmetrizedGroup, GAPGroup, Naive, Symmetrize,
export PropertyTGroup, SymmetrizedGroup, GAPGroup,
SpecialLinearGroup,
SpecialAutomorphismGroup,
HigmanGroup,
CapraceGroup,
MappingClassGroup
export PropertyTGroup
abstract type PropertyTGroup end
abstract type SymmetrizedGroup <: PropertyTGroup end
abstract type GAPGroup <: PropertyTGroup end
struct Symmetrize end
struct Naive end
function PropertyTGroup(args)
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("speciallinear.jl")
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("higman.jl")