GroupsWithPropertyT/groups/autfreegroup.jl

78 lines
2.1 KiB
Julia
Raw Normal View History

module SpecialAutomorphisms
2018-07-31 12:42:58 +02:00
using AbstractAlgebra
using Groups
2018-07-31 12:42:58 +02:00
import AbstractAlgebra.perm
###############################################################################
#
# Generating set
#
###############################################################################
function generatingset(N::Int)
SAutFN = AutGroup(FreeGroup(N), special=true)
S = gens(SAutFN);
return SAutFN, unique([S; inv.(S)])
end
function generatingset(parsed_args)
N = parsed_args["N"]
return generatingset(N)
end
###############################################################################
#
# Action of WreathProductElems on AutGroupElem
#
###############################################################################
function AutFG_emb(A::AutGroup, g::WreathProductElem)
isa(A.objectGroup, FreeGroup) || throw("Not an Aut(Fₙ)")
parent(g).P.n == length(A.objectGroup.gens) || throw("No natural embedding of $(parent(g)) into $A")
powers = [(elt == parent(elt)() ? 0: 1) for elt in g.n.elts]
elt = reduce(*, [A(Groups.flip_autsymbol(i))^pow for (i,pow) in enumerate(powers)])
Groups.r_multiply!(elt, [Groups.perm_autsymbol(g.p)])
return elt
end
function AutFG_emb(A::AutGroup, p::perm)
isa(A.objectGroup, FreeGroup) || throw("Not an Aut(Fₙ)")
parent(p).n == length(A.objectGroup.gens) || throw("No natural embedding of $(parent(g)) into $A")
return A(Groups.perm_autsymbol(p))
end
2018-07-31 12:42:58 +02:00
function (g::WreathProductElem)(a::Groups.Automorphism)
g = AutFG_emb(parent(a),g)
return g*a*g^-1
end
2018-07-31 12:42:58 +02:00
function (p::perm)(a::Groups.Automorphism)
g = AutFG_emb(parent(a),p)
return g*a*g^-1
end
2017-11-08 11:55:34 +01:00
autS(N::Int) = WreathProduct(PermutationGroup(2), PermutationGroup(N))
function autS(parsed_args)
2017-11-08 11:55:34 +01:00
return autS(parsed_args["N"])
end
###############################################################################
#
# Misc
#
###############################################################################
function groupname(parsed_args)
N = parsed_args["N"]
2017-12-21 13:02:00 +01:00
return groupname(N), N
end
groupname(N::Int) = "SAutF$(N)"
2017-12-21 13:02:00 +01:00
end # of module SpecialAutomorphisms