PropertyT.jl/src/actions/autfn_conjugation.jl

31 lines
807 B
Julia
Raw Normal View History

2022-11-07 16:21:58 +01:00
## Particular definitions for actions on Aut(F_n)
function _conj(
t::Groups.Transvection,
σ::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
function action_by_conjugation(
sautfn::Groups.AutomorphismGroup{<:Groups.FreeGroup},
Σ::Groups.Group,
)
return AlphabetPermutation(alphabet(sautfn), Σ, _conj)
end