diff --git a/groups/Allgroups.jl b/groups/Allgroups.jl index 4a6e896..bef8fa0 100644 --- a/groups/Allgroups.jl +++ b/groups/Allgroups.jl @@ -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")