mirror of
https://github.com/kalmarek/Groups.jl.git
synced 2024-11-19 06:30:29 +01:00
add tests for AutSigma₃.₀
This commit is contained in:
parent
baec864437
commit
b5e62c27e0
75
test/AutSigma3.jl
Normal file
75
test/AutSigma3.jl
Normal file
@ -0,0 +1,75 @@
|
||||
@testset "Aut(Σ₃.₀)" begin
|
||||
genus = 3
|
||||
|
||||
π₁Σ = Groups.SurfaceGroup(genus, 0)
|
||||
|
||||
Groups.PermRightAut(p::Perm) = Groups.PermRightAut(p.d)
|
||||
# Groups.PermLeftAut(p::Perm) = Groups.PermLeftAut(p.d)
|
||||
autπ₁Σ = let autπ₁Σ = AutomorphismGroup(π₁Σ)
|
||||
pauts = let p = perm"(1,3,5)(2,4,6)"
|
||||
[Groups.PermRightAut(p^i) for i in 0:2]
|
||||
end
|
||||
T = eltype(KnuthBendix.letters(alphabet(autπ₁Σ)))
|
||||
S = eltype(pauts)
|
||||
|
||||
A = Alphabet(Union{T,S}[KnuthBendix.letters(alphabet(autπ₁Σ)); pauts])
|
||||
|
||||
autG = AutomorphismGroup(
|
||||
π₁Σ,
|
||||
autπ₁Σ.gens,
|
||||
A,
|
||||
ntuple(i->inv(gens(π₁Σ, i)), 2Groups.genus(π₁Σ))
|
||||
)
|
||||
|
||||
autG
|
||||
end
|
||||
|
||||
Al = alphabet(autπ₁Σ)
|
||||
S = [gens(autπ₁Σ); inv.(gens(autπ₁Σ))]
|
||||
|
||||
sautFn = let ltrs = KnuthBendix.letters(Al)
|
||||
parent(first(ltrs).autFn_word)
|
||||
end
|
||||
|
||||
τ = Groups.rotation_element(sautFn)
|
||||
|
||||
@testset "Twists" begin
|
||||
A = KnuthBendix.alphabet(sautFn)
|
||||
λ = Groups.ΡΛ(:λ, A, 2genus)
|
||||
ϱ = Groups.ΡΛ(:ϱ, A, 2genus)
|
||||
@test sautFn(Groups.Te_diagonal(λ, ϱ, 1)) ==
|
||||
conj(sautFn(Groups.Te_diagonal(λ, ϱ, 2)), τ)
|
||||
|
||||
@test sautFn(Groups.Te_diagonal(λ, ϱ, 3)) == sautFn(Groups.Te(λ, ϱ, 3, 1))
|
||||
end
|
||||
|
||||
z = let d = Groups.domain(τ)
|
||||
Groups.evaluate(τ^genus)
|
||||
end
|
||||
|
||||
@test π₁Σ.(word.(z)) == Groups.domain(first(S))
|
||||
d = Groups.domain(first(S))
|
||||
p = perm"(1,3,5)(2,4,6)"
|
||||
@test Groups.evaluate!(deepcopy(d), τ) == d^inv(p)
|
||||
@test Groups.evaluate!(deepcopy(d), τ^2) == d^p
|
||||
|
||||
E, sizes = Groups.wlmetric_ball(S, radius=3)
|
||||
@test sizes == [49, 1813, 62971]
|
||||
B2 = @view E[1:sizes[2]]
|
||||
|
||||
σ = autπ₁Σ(Word([Al[Groups.PermRightAut(p)]]))
|
||||
|
||||
@test conj(S[7], σ) == S[10]
|
||||
@test conj(S[7], σ^2) == S[11]
|
||||
@test conj(S[9], σ) == S[12]
|
||||
@test conj(S[9], σ^2) == S[8]
|
||||
|
||||
@test conj(S[1], σ) == S[4]
|
||||
@test conj(S[1], σ^2) == S[5]
|
||||
@test conj(S[3], σ) == S[6]
|
||||
@test conj(S[3], σ^2) == S[2]
|
||||
|
||||
B2ᶜ = [conj(b, σ) for b in B2]
|
||||
@test B2ᶜ != B2
|
||||
@test Set(B2ᶜ) == Set(B2)
|
||||
end
|
@ -5,9 +5,10 @@ using Groups.KnuthBendix
|
||||
|
||||
genus = 4
|
||||
|
||||
G = SpecialAutomorphismGroup(FreeGroup(2genus))
|
||||
Fn = FreeGroup(2genus)
|
||||
G = SpecialAutomorphismGroup(Fn)
|
||||
|
||||
T = Groups.mcg_twists(autF)
|
||||
T = Groups.mcg_twists(G)
|
||||
|
||||
# symplectic pairing in the free Group goes like this:
|
||||
# f1 ↔ f5
|
||||
@ -41,7 +42,6 @@ using Groups.KnuthBendix
|
||||
|
||||
As = T[[1, 5, 9, 6, 12, 7, 14, 8]] # the inverses of the elements a
|
||||
|
||||
|
||||
@testset "preserving relator" begin
|
||||
F = Groups.object(G)
|
||||
|
||||
@ -123,7 +123,12 @@ using Groups.KnuthBendix
|
||||
# x = (a4^-1*a3^-1*a2^-1*a1^-1*u*a2*a3*a4*a5*a6)
|
||||
@time evaluate(x)
|
||||
b3 = x * a0 * x^-1
|
||||
@time evaluate(b3)
|
||||
b3im = @time evaluate(b3)
|
||||
b3cim = @time let g = b3
|
||||
f = Groups.compiled(g)
|
||||
f(Groups.domain(g))
|
||||
end
|
||||
@test b3im == b3cim
|
||||
@test a0 * b2 * b1 == a1 * a3 * a5 * b3
|
||||
end
|
||||
end
|
||||
@ -170,46 +175,13 @@ using Groups.KnuthBendix
|
||||
|
||||
@testset "hyperelliptic τ is central" begin
|
||||
|
||||
A = alphabet(G)
|
||||
λ = Groups.ΡΛ(:λ, A, 2genus)
|
||||
ϱ = Groups.ΡΛ(:ϱ, A, 2genus)
|
||||
|
||||
import Groups: Ta, Tα, Te
|
||||
|
||||
halftwists = map(1:genus-1) do i
|
||||
j = i + 1
|
||||
x = Ta(λ, j) * inv(A, Ta(λ, i)) * Tα(λ, j) * Te(λ, ϱ, i, j)
|
||||
δ = x * Tα(λ, i) * inv(A, x)
|
||||
c =
|
||||
inv(A, Ta(λ, j)) *
|
||||
Te(λ, ϱ, i, j) *
|
||||
Tα(λ, i)^2 *
|
||||
inv(A, δ) *
|
||||
inv(A, Ta(λ, j)) *
|
||||
Ta(λ, i) *
|
||||
δ
|
||||
z =
|
||||
Te(λ, ϱ, j, i) *
|
||||
inv(A, Ta(λ, i)) *
|
||||
Tα(λ, i) *
|
||||
Ta(λ, i) *
|
||||
inv(A, Te(λ, ϱ, j, i))
|
||||
|
||||
G(Ta(λ, i) * inv(A, Ta(λ, j) * Tα(λ, j))^6 * (Ta(λ, j) * Tα(λ, j) * z)^4 * c)
|
||||
end
|
||||
|
||||
τ = (G(Ta(λ, 1) * Tα(λ, 1))^6) * prod(halftwists)
|
||||
|
||||
# τ^genus is trivial but only in autπ₁Σ₄
|
||||
# here we check its centrality
|
||||
|
||||
τ = Groups.rotation_element(G)
|
||||
τᵍ = τ^genus
|
||||
|
||||
symplectic_gens = let genus = genus, G = G
|
||||
π₁Σ = Groups.SurfaceGroup(genus, 0)
|
||||
autπ₁Σ = AutomorphismGroup(π₁Σ)
|
||||
letters = alphabet(autπ₁Σ).letters
|
||||
G.(word(l.autFn_word) for l in letters)
|
||||
s_twists = Groups.symplectic_twists(π₁Σ)
|
||||
G.(word(t.autFn_word) for t in s_twists)
|
||||
end
|
||||
|
||||
@test all(sg * τᵍ == τᵍ * sg for sg in symplectic_gens)
|
||||
|
@ -27,6 +27,7 @@ include(joinpath(pathof(GroupsCore), "..", "..", "test", "conformance_test.jl"))
|
||||
|
||||
include("AutFn.jl")
|
||||
include("AutSigma_41.jl")
|
||||
include("AutSigma3.jl")
|
||||
|
||||
# if !haskey(ENV, "CI")
|
||||
# include("benchmarks.jl")
|
||||
|
Loading…
Reference in New Issue
Block a user