PropertyT.jl/test/graded_adj.jl

113 lines
3.4 KiB
Julia
Raw Normal View History

@testset "Adj via grading" begin
@testset "SL(n,Z) & Aut(F₄)" begin
n = 4
halfradius = 1
SL = MatrixGroups.SpecialLinearGroup{n}(Int8)
2023-03-19 23:28:36 +01:00
RSL, S, sizes = PropertyT.group_algebra(SL; halfradius = halfradius)
2022-11-07 18:45:12 +01:00
Δ = RSL(length(S)) - sum(RSL(s) for s in S)
Δs = let ψ = identity
PropertyT.laplacians(
RSL,
S,
x -> (gx = PropertyT.grading(ψ(x)); Set([gx, -gx])),
)
end
sq, adj, op = PropertyT.SqAdjOp(RSL, n)
@test PropertyT.Adj(Δs, :A₁) == sq
@test PropertyT.Adj(Δs, :A₂) == adj
@test PropertyT.Adj(Δs, Symbol("A₁×A₁")) == op
2022-11-07 18:45:12 +01:00
halfradius = 1
G = SpecialAutomorphismGroup(FreeGroup(n))
2023-03-19 23:28:36 +01:00
RG, S, sizes = PropertyT.group_algebra(G; halfradius = halfradius)
2022-11-07 18:45:12 +01:00
Δ = RG(length(S)) - sum(RG(s) for s in S)
Δs = let ψ = Groups.Homomorphism(Groups._abelianize, G, SL)
PropertyT.laplacians(
RG,
S,
x -> (gx = PropertyT.grading(ψ(x)); Set([gx, -gx])),
)
end
sq, adj, op = PropertyT.SqAdjOp(RG, n)
@test PropertyT.Adj(Δs, :A₁) == sq
@test PropertyT.Adj(Δs, :A₂) == adj
@test PropertyT.Adj(Δs, Symbol("A₁×A₁")) == op
2022-11-07 18:45:12 +01:00
end
@testset "Symplectic group" begin
@testset "Sp2()" begin
genus = 2
halfradius = 1
SpN = MatrixGroups.SymplecticGroup{2genus}(Int8)
2023-03-19 23:28:36 +01:00
RSpN, S_sp, sizes_sp =
PropertyT.group_algebra(SpN; halfradius = halfradius)
Δ, Δs = let RG = RSpN, S = S_sp, ψ = identity
Δ = RG(length(S)) - sum(RG(s) for s in S)
Δs = PropertyT.laplacians(
RG,
S,
x -> (gx = PropertyT.grading(ψ(x)); Set([gx, -gx])),
)
Δ, Δs
end
sq = sum(Δᵢ^2 for Δᵢ in values(Δs))
@test PropertyT.Adj(Δs, :C₂) + sq == Δ^2
end
genus = 3
halfradius = 1
SpN = MatrixGroups.SymplecticGroup{2genus}(Int8)
2023-03-19 23:28:36 +01:00
RSpN, S_sp, sizes_sp =
PropertyT.group_algebra(SpN; halfradius = halfradius)
Δ, Δs = let RG = RSpN, S = S_sp, ψ = identity
Δ = RG(length(S)) - sum(RG(s) for s in S)
Δs = PropertyT.laplacians(
RG,
S,
x -> (gx = PropertyT.grading(ψ(x)); Set([gx, -gx])),
)
Δ, Δs
end
2022-11-14 19:50:50 +01:00
@testset "Adj numerics for genus=$genus" begin
all_subtypes = (
2023-03-19 23:28:36 +01:00
:A₁,
:C₁,
Symbol("A₁×A₁"),
Symbol("C₁×C₁"),
Symbol("A₁×C₁"),
:A₂,
:C₂,
)
2022-11-07 18:45:12 +01:00
@test PropertyT.Adj(Δs, :A₂)[one(SpN)] == 384
@test iszero(PropertyT.Adj(Δs, Symbol("A₁×A₁")))
@test iszero(PropertyT.Adj(Δs, Symbol("C₁×C₁")))
@testset "divisibility by 16" begin
for subtype in all_subtypes
subtype in (:A₁, :C₁) && continue
@test isinteger(PropertyT.Adj(Δs, subtype)[one(SpN)] / 16)
end
2022-11-07 18:45:12 +01:00
end
2023-03-19 23:28:36 +01:00
@test sum(PropertyT.Adj(Δs, subtype) for subtype in all_subtypes) ==
Δ^2
2022-11-07 18:45:12 +01:00
end
end
end