From 639c05b4fa8131e9f5c017c084ea65c80e123d71 Mon Sep 17 00:00:00 2001 From: kalmar Date: Fri, 12 May 2017 20:49:02 +0200 Subject: [PATCH] further tests --- test/runtests.jl | 257 ++++++++++++++++++++++++----------------------- 1 file changed, 129 insertions(+), 128 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 0af3282..3c21b73 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -120,8 +120,8 @@ using Base.Test end @testset "replacements" begin - a = FPSymbol("a") - b = FPSymbol("b") + a = Groups.FreeSymbol("a") + b = Groups.FreeSymbol("b") @test Groups.is_subsymbol(a, Groups.change_pow(a,2)) == true @test Groups.is_subsymbol(a, Groups.change_pow(a,-2)) == false @test Groups.is_subsymbol(b, Groups.change_pow(a,-2)) == false @@ -132,7 +132,7 @@ using Base.Test @test findnext(c*s^-1*t^-1, s^-1*t^-1,4) == 5 @test findfirst(c*t, c) == 0 w = s*t*s^-1 - subst = Dict{FPGroupElem, FPGroupElem}(w => s^1, s*t^-1 => t^4) + subst = Dict{FreeGroupElem, FreeGroupElem}(w => s^1, s*t^-1 => t^4) @test Groups.replace(c, 1, s*t, G()) == s^-1*t^-1 @test Groups.replace(c, 1, w, subst[w]) == s*t^-1 @test Groups.replace(s*c*t^-1, 1, w, subst[w]) == s^2*t^-2 @@ -141,141 +141,142 @@ using Base.Test end end + @testset "Automorphisms" begin @testset "AutSymbol" begin @test_throws MethodError AutSymbol("a") @test_throws MethodError AutSymbol("a", 1) f = AutSymbol("a", 1, :(a()), v -> v) - @test isa(f, GSymbol) - @test isa(f, AutSymbol) + @test isa(f, Groups.GSymbol) + @test isa(f, Groups.AutSymbol) @test isa(symmetric_AutSymbol([1,2,3,4]), AutSymbol) @test isa(rmul_AutSymbol(1,2), AutSymbol) @test isa(lmul_AutSymbol(3,4), AutSymbol) @test isa(flip_AutSymbol(3), AutSymbol) end - @testset "flip_AutSymbol correctness" begin - a,b,c,d = [FPGroupElem(FPSymbol(i)) for i in ["a", "b", "c", "d"]] - domain = [a,b,c,d] - @test flip_AutSymbol(1)(domain) == [a^-1, b,c,d] - @test flip_AutSymbol(2)(domain) == [a, b^-1,c,d] - @test flip_AutSymbol(3)(domain) == [a, b,c^-1,d] - @test flip_AutSymbol(4)(domain) == [a, b,c,d^-1] - @test inv(flip_AutSymbol(1))(domain) == [a^-1, b,c,d] - @test inv(flip_AutSymbol(2))(domain) == [a, b^-1,c,d] - @test inv(flip_AutSymbol(3))(domain) == [a, b,c^-1,d] - @test inv(flip_AutSymbol(4))(domain) == [a, b,c,d^-1] - end - - @testset "symmetric_AutSymbol correctness" begin - a,b,c,d = [FPGroupElem(FPSymbol(i)) for i in ["a", "b", "c", "d"]] - domain = [a,b,c,d] - σ = symmetric_AutSymbol([1,2,3,4]) - @test σ(domain) == domain - @test inv(σ)(domain) == domain - - σ = symmetric_AutSymbol([2,3,4,1]) - @test σ(domain) == [b, c, d, a] - @test inv(σ)(domain) == [d, a, b, c] - - σ = symmetric_AutSymbol([2,1,4,3]) - @test σ(domain) == [b, a, d, c] - @test inv(σ)(domain) == [b, a, d, c] - - σ = symmetric_AutSymbol([2,3,1,4]) - @test σ(domain) == [b,c,a,d] - @test inv(σ)(domain) == [c,a,b,d] - end - - @testset "mul_AutSymbol correctness" begin - a,b,c,d = [FPGroupElem(FPSymbol(i)) for i in ["a", "b", "c", "d"]] - domain = [a,b,c,d] - i,j = 1,2 - r = rmul_AutSymbol(i,j) - l = lmul_AutSymbol(i,j) - @test r(domain) == [a*b,b,c,d] - @test inv(r)(domain) == [a*b^-1,b,c,d] - @test l(domain) == [b*a,b,c,d] - @test inv(l)(domain) == [b^-1*a,b,c,d] - - i,j = 3,1 - r = rmul_AutSymbol(i,j) - l = lmul_AutSymbol(i,j) - @test r(domain) == [a,b,c*a,d] - @test inv(r)(domain) == [a,b,c*a^-1,d] - @test l(domain) == [a,b,a*c,d] - @test inv(l)(domain) == [a,b,a^-1*c,d] - - - i,j = 4,3 - r = rmul_AutSymbol(i,j) - l = lmul_AutSymbol(i,j) - @test r(domain) == [a,b,c,d*c] - @test inv(r)(domain) == [a,b,c,d*c^-1] - @test l(domain) == [a,b,c,c*d] - @test inv(l)(domain) == [a,b,c,c^-1*d] - - - i,j = 2,4 - r = rmul_AutSymbol(i,j) - l = lmul_AutSymbol(i,j) - @test r(domain) == [a,b*d,c,d] - @test inv(r)(domain) == [a,b*d^-1,c,d] - @test l(domain) == [a,d*b,c,d] - @test inv(l)(domain) == [a,d^-1*b,c,d] - end - - @testset "AutWords" begin - f = AutSymbol("a", 1, :(a()), v -> v) - @test isa(GWord(f), GWord) - @test isa(GWord(f), AutWord) - @test isa(AutWord(f), AutWord) - @test isa(f*f, AutWord) - @test isa(f^2, AutWord) - @test isa(f^-1, AutWord) - end - - @testset "eltary functions" begin - f = symmetric_AutSymbol([2,1,4,3]) - @test isa(inv(f), AutSymbol) - @test isa(f^-1, AutWord) - @test f^-1 == GWord(inv(f)) - @test inv(f) == f - end - - @testset "reductions/arithmetic" begin - f = symmetric_AutSymbol([2,1,4,3]) - f² = Groups.r_multiply(AutWord(f), [f], reduced=false) - @test Groups.simplify_perms!(f²) == false - @test f² == one(typeof(f*f)) - - a = rmul_AutSymbol(1,2)*flip_AutSymbol(2) - b = flip_AutSymbol(2)*inv(rmul_AutSymbol(1,2)) - @test a*b == b*a - @test a^3 * b^3 == one(a) - end - - @testset "specific Aut(𝔽₄) tests" begin - N = 4 - import Combinatorics.nthperm - SymmetricGroup(n) = [nthperm(collect(1:n), k) for k in 1:factorial(n)] - indexing = [[i,j] for i in 1:N for j in 1:N if i≠j] - - σs = [symmetric_AutSymbol(perm) for perm in SymmetricGroup(N)[2:end]]; - ϱs = [rmul_AutSymbol(i,j) for (i,j) in indexing] - λs = [lmul_AutSymbol(i,j) for (i,j) in indexing] - ɛs = [flip_AutSymbol(i) for i in 1:N]; - - S = vcat(ϱs, λs, σs, ɛs) - S = vcat(S, [inv(s) for s in S]) - @test isa(S, Vector{AutSymbol}) - @test length(S) == 102 - @test length(unique(S)) == 75 - S₁ = [GWord(s) for s in unique(S)] - @test isa(S₁, Vector{AutWord}) - p = prod(S₁) - @test length(p) == 53 - end - end + # @testset "flip_AutSymbol correctness" begin + # a,b,c,d = [FreeGroupElem(Groups.FreeSymbol(i)) for i in ["a", "b", "c", "d"]] + # domain = [a,b,c,d] + # @test flip_AutSymbol(1)(domain) == [a^-1, b,c,d] + # @test flip_AutSymbol(2)(domain) == [a, b^-1,c,d] + # @test flip_AutSymbol(3)(domain) == [a, b,c^-1,d] + # @test flip_AutSymbol(4)(domain) == [a, b,c,d^-1] + # @test inv(flip_AutSymbol(1))(domain) == [a^-1, b,c,d] + # @test inv(flip_AutSymbol(2))(domain) == [a, b^-1,c,d] + # @test inv(flip_AutSymbol(3))(domain) == [a, b,c^-1,d] + # @test inv(flip_AutSymbol(4))(domain) == [a, b,c,d^-1] + # end + # + # @testset "symmetric_AutSymbol correctness" begin + # a,b,c,d = [FreeGroupElem(Groups.FreeSymbol(i)) for i in ["a", "b", "c", "d"]] + # domain = [a,b,c,d] + # σ = symmetric_AutSymbol([1,2,3,4]) + # @test σ(domain) == domain + # @test inv(σ)(domain) == domain + # + # σ = symmetric_AutSymbol([2,3,4,1]) + # @test σ(domain) == [b, c, d, a] + # @test inv(σ)(domain) == [d, a, b, c] + # + # σ = symmetric_AutSymbol([2,1,4,3]) + # @test σ(domain) == [b, a, d, c] + # @test inv(σ)(domain) == [b, a, d, c] + # + # σ = symmetric_AutSymbol([2,3,1,4]) + # @test σ(domain) == [b,c,a,d] + # @test inv(σ)(domain) == [c,a,b,d] + # end + # + # @testset "mul_AutSymbol correctness" begin + # a,b,c,d = [FreeGroupElem(Groups.FreeSymbol(i)) for i in ["a", "b", "c", "d"]] + # domain = [a,b,c,d] + # i,j = 1,2 + # r = rmul_AutSymbol(i,j) + # l = lmul_AutSymbol(i,j) + # @test r(domain) == [a*b,b,c,d] + # @test inv(r)(domain) == [a*b^-1,b,c,d] + # @test l(domain) == [b*a,b,c,d] + # @test inv(l)(domain) == [b^-1*a,b,c,d] + # + # i,j = 3,1 + # r = rmul_AutSymbol(i,j) + # l = lmul_AutSymbol(i,j) + # @test r(domain) == [a,b,c*a,d] + # @test inv(r)(domain) == [a,b,c*a^-1,d] + # @test l(domain) == [a,b,a*c,d] + # @test inv(l)(domain) == [a,b,a^-1*c,d] + # + # + # i,j = 4,3 + # r = rmul_AutSymbol(i,j) + # l = lmul_AutSymbol(i,j) + # @test r(domain) == [a,b,c,d*c] + # @test inv(r)(domain) == [a,b,c,d*c^-1] + # @test l(domain) == [a,b,c,c*d] + # @test inv(l)(domain) == [a,b,c,c^-1*d] + # + # + # i,j = 2,4 + # r = rmul_AutSymbol(i,j) + # l = lmul_AutSymbol(i,j) + # @test r(domain) == [a,b*d,c,d] + # @test inv(r)(domain) == [a,b*d^-1,c,d] + # @test l(domain) == [a,d*b,c,d] + # @test inv(l)(domain) == [a,d^-1*b,c,d] + # end + # + # @testset "AutWords" begin + # f = AutSymbol("a", 1, :(a()), v -> v) + # @test isa(GWord(f), GWord) + # @test isa(GWord(f), AutWord) + # @test isa(AutWord(f), AutWord) + # @test isa(f*f, AutWord) + # @test isa(f^2, AutWord) + # @test isa(f^-1, AutWord) + # end + # + # @testset "eltary functions" begin + # f = symmetric_AutSymbol([2,1,4,3]) + # @test isa(inv(f), AutSymbol) + # @test isa(f^-1, AutWord) + # @test f^-1 == GWord(inv(f)) + # @test inv(f) == f + # end + # + # @testset "reductions/arithmetic" begin + # f = symmetric_AutSymbol([2,1,4,3]) + # f² = Groups.r_multiply(AutWord(f), [f], reduced=false) + # @test Groups.simplify_perms!(f²) == false + # @test f² == one(typeof(f*f)) + # + # a = rmul_AutSymbol(1,2)*flip_AutSymbol(2) + # b = flip_AutSymbol(2)*inv(rmul_AutSymbol(1,2)) + # @test a*b == b*a + # @test a^3 * b^3 == one(a) + # end + # + # @testset "specific Aut(𝔽₄) tests" begin + # N = 4 + # import Combinatorics.nthperm + # SymmetricGroup(n) = [nthperm(collect(1:n), k) for k in 1:factorial(n)] + # indexing = [[i,j] for i in 1:N for j in 1:N if i≠j] + # + # σs = [symmetric_AutSymbol(perm) for perm in SymmetricGroup(N)[2:end]]; + # ϱs = [rmul_AutSymbol(i,j) for (i,j) in indexing] + # λs = [lmul_AutSymbol(i,j) for (i,j) in indexing] + # ɛs = [flip_AutSymbol(i) for i in 1:N]; + # + # S = vcat(ϱs, λs, σs, ɛs) + # S = vcat(S, [inv(s) for s in S]) + # @test isa(S, Vector{AutSymbol}) + # @test length(S) == 102 + # @test length(unique(S)) == 75 + # S₁ = [GWord(s) for s in unique(S)] + # @test isa(S₁, Vector{AutWord}) + # p = prod(S₁) + # @test length(p) == 53 + # end + # end end