2022-11-07 16:21:58 +01:00
|
|
|
|
## Particular definitions for actions on Aut(F_n)
|
|
|
|
|
|
|
|
|
|
function _conj(
|
|
|
|
|
t::Groups.Transvection,
|
2024-02-15 22:42:17 +01:00
|
|
|
|
σ::PG.AbstractPermutation,
|
2022-11-07 16:21:58 +01:00
|
|
|
|
)
|
|
|
|
|
return Groups.Transvection(t.id, t.i^inv(σ), t.j^inv(σ), t.inv)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function _flip(t::Groups.Transvection, g::Groups.GroupElement)
|
|
|
|
|
isone(g) && return t
|
|
|
|
|
return Groups.Transvection(t.id === :ϱ ? :λ : :ϱ, t.i, t.j, t.inv)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function _conj(
|
|
|
|
|
t::Groups.Transvection,
|
|
|
|
|
x::Groups.Constructions.DirectPowerElement,
|
|
|
|
|
)
|
|
|
|
|
@assert Groups.order(Int, parent(x).group) == 2
|
|
|
|
|
i, j = t.i, t.j
|
|
|
|
|
t = ifelse(isone(x.elts[i] * x.elts[j]), t, inv(t))
|
|
|
|
|
return _flip(t, x.elts[i])
|
|
|
|
|
end
|
|
|
|
|
|
2024-02-15 22:42:17 +01:00
|
|
|
|
function action_by_conjugation(
|
|
|
|
|
sautfn::Groups.AutomorphismGroup{<:Groups.FreeGroup},
|
|
|
|
|
Σ::Groups.Group,
|
|
|
|
|
)
|
|
|
|
|
return AlphabetPermutation(alphabet(sautfn), Σ, _conj)
|
|
|
|
|
end
|