31 lines
807 B
Julia
31 lines
807 B
Julia
## Particular definitions for actions on Aut(F_n)
|
||
|
||
function _conj(
|
||
t::Groups.Transvection,
|
||
σ::PG.AbstractPermutation,
|
||
)
|
||
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
|
||
|
||
function action_by_conjugation(
|
||
sautfn::Groups.AutomorphismGroup{<:Groups.FreeGroup},
|
||
Σ::Groups.Group,
|
||
)
|
||
return AlphabetPermutation(alphabet(sautfn), Σ, _conj)
|
||
end
|