2018-08-08 00:17:44 +02:00
|
|
|
module PropertyTGroups
|
|
|
|
|
2018-09-05 17:53:26 +02:00
|
|
|
using PropertyT
|
2018-08-08 00:17:44 +02:00
|
|
|
using AbstractAlgebra
|
|
|
|
using Nemo
|
|
|
|
using Groups
|
|
|
|
|
2018-09-05 17:53:26 +02:00
|
|
|
export PropertyTGroup, SymmetrizedGroup, GAPGroup,
|
2018-08-20 03:28:09 +02:00
|
|
|
SpecialLinearGroup,
|
|
|
|
SpecialAutomorphismGroup,
|
|
|
|
HigmanGroup,
|
|
|
|
CapraceGroup,
|
|
|
|
MappingClassGroup
|
2018-08-08 00:17:44 +02:00
|
|
|
|
2018-09-05 17:53:26 +02:00
|
|
|
export PropertyTGroup
|
|
|
|
|
2018-08-08 00:17:44 +02:00
|
|
|
abstract type PropertyTGroup end
|
|
|
|
|
2018-08-15 17:19:28 +02:00
|
|
|
abstract type SymmetrizedGroup <: PropertyTGroup end
|
2018-08-08 00:17:44 +02:00
|
|
|
|
|
|
|
abstract type GAPGroup <: PropertyTGroup end
|
|
|
|
|
2018-09-05 17:53:26 +02:00
|
|
|
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
|
2018-08-20 03:22:16 +02:00
|
|
|
|
2018-08-08 00:17:44 +02:00
|
|
|
include("autfreegroup.jl")
|
|
|
|
include("speciallinear.jl")
|
|
|
|
|
|
|
|
Comm(x,y) = x*y*x^-1*y^-1
|
|
|
|
|
2018-09-05 17:53:26 +02:00
|
|
|
function generatingset(G::GAPGroup)
|
|
|
|
S = gens(group(G))
|
|
|
|
return unique([S; inv.(S)])
|
|
|
|
end
|
2018-08-08 00:17:44 +02:00
|
|
|
|
|
|
|
include("mappingclassgroup.jl")
|
|
|
|
include("higman.jl")
|
|
|
|
include("caprace.jl")
|
|
|
|
|
|
|
|
end # of module PropertyTGroups
|