mirror of
https://github.com/kalmarek/PropertyT.jl.git
synced 2024-11-26 00:55:27 +01:00
fix actions on SpNs
This commit is contained in:
parent
971e07b819
commit
703e69fc62
@ -4,6 +4,7 @@ StarAlgebras.star(g::Groups.GroupElement) = inv(g)
|
|||||||
include("alphabet_permutation.jl")
|
include("alphabet_permutation.jl")
|
||||||
|
|
||||||
include("sln_conjugation.jl")
|
include("sln_conjugation.jl")
|
||||||
|
include("spn_conjugation.jl")
|
||||||
include("autfn_conjugation.jl")
|
include("autfn_conjugation.jl")
|
||||||
|
|
||||||
function SymbolicWedderburn.action(
|
function SymbolicWedderburn.action(
|
||||||
|
@ -1,26 +1,43 @@
|
|||||||
## Particular definitions for actions on Sp(n,ℤ)
|
## Particular definitions for actions on Sp(n,ℤ)
|
||||||
|
|
||||||
function _conj(
|
function _conj(
|
||||||
t::MatrixGroups.ElementarySymplectic{N,T},
|
s::MatrixGroups.ElementarySymplectic{N,T},
|
||||||
σ::PermutationGroups.AbstractPerm,
|
σ::PermutationGroups.AbstractPerm,
|
||||||
) where {N,T}
|
) where {N,T}
|
||||||
@assert iseven(N)
|
@assert iseven(N)
|
||||||
@assert degree(σ) == N ÷ 2 "Got degree = $(degree(σ)); N = $N"
|
@assert PermutationGroups.degree(σ) == N ÷ 2 "Got degree = $(PermutationGroups.degree(σ)); N = $N"
|
||||||
i = mod1(t.i, N ÷ 2)
|
n = N ÷ 2
|
||||||
ib = i == t.i ? 0 : N ÷ 2
|
@assert 1 ≤ s.i ≤ N
|
||||||
j = mod1(t.j, N ÷ 2)
|
@assert 1 ≤ s.j ≤ N
|
||||||
jb = j == t.j ? 0 : N ÷ 2
|
if s.symbol == :A
|
||||||
return MatrixGroups.ElementarySymplectic{N}(t.symbol, i^inv(σ) + ib, j^inv(σ) + jb, t.val)
|
@assert 1 ≤ s.i ≤ n
|
||||||
|
@assert 1 ≤ s.j ≤ n
|
||||||
|
i = s.i^inv(σ)
|
||||||
|
j = s.j^inv(σ)
|
||||||
|
else
|
||||||
|
@assert s.symbol == :B
|
||||||
|
@assert xor(s.i > n, s.j > n)
|
||||||
|
if s.i > n
|
||||||
|
i = (s.i - n)^inv(σ) + n
|
||||||
|
j = s.j^inv(σ)
|
||||||
|
elseif s.j > n
|
||||||
|
i = s.i^inv(σ)
|
||||||
|
j = (s.j - n)^inv(σ) + n
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return MatrixGroups.ElementarySymplectic{N}(s.symbol, i, j, s.val)
|
||||||
end
|
end
|
||||||
|
|
||||||
function _conj(
|
function _conj(
|
||||||
t::MatrixGroups.ElementarySymplectic{N,T},
|
s::MatrixGroups.ElementarySymplectic{N,T},
|
||||||
x::Groups.Constructions.DirectPowerElement,
|
x::Groups.Constructions.DirectPowerElement,
|
||||||
) where {N,T}
|
) where {N,T}
|
||||||
@assert Groups.order(Int, parent(x).group) == 2
|
@assert Groups.order(Int, parent(x).group) == 2
|
||||||
@assert iseven(N)
|
@assert iseven(N)
|
||||||
just_one_flips = xor(isone(x.elts[mod1(t.i, N ÷ 2)]), isone(x.elts[mod1(t.j, N ÷ 2)]))
|
n = N ÷ 2
|
||||||
return ifelse(just_one_flips, inv(t), t)
|
i, j = ifelse(s.i <= n, s.i, s.i - n), ifelse(s.j <= n, s.j, s.j - n)
|
||||||
|
just_one_flips = xor(isone(x.elts[i]), isone(x.elts[j]))
|
||||||
|
return ifelse(just_one_flips, inv(s), s)
|
||||||
end
|
end
|
||||||
|
|
||||||
action_by_conjugation(sln::Groups.MatrixGroups.SymplecticGroup, Σ::Groups.Group) =
|
action_by_conjugation(sln::Groups.MatrixGroups.SymplecticGroup, Σ::Groups.Group) =
|
||||||
|
Loading…
Reference in New Issue
Block a user