From e23b6a85dc886ccf9237e21140fe1758f49ad3a9 Mon Sep 17 00:00:00 2001 From: kalmarek Date: Thu, 4 Jul 2019 15:31:55 +0200 Subject: [PATCH] include sqadjop.jl from 1812.03456.jl file --- src/1812.03456.jl | 26 ++++++++++++++++++++++++++ src/PropertyT.jl | 3 +-- src/sqadjop.jl | 29 ----------------------------- test/1812.03456.jl | 12 ++++++------ 4 files changed, 33 insertions(+), 37 deletions(-) create mode 100644 src/1812.03456.jl diff --git a/src/1812.03456.jl b/src/1812.03456.jl new file mode 100644 index 0000000..bf36e78 --- /dev/null +++ b/src/1812.03456.jl @@ -0,0 +1,26 @@ +indexing(n) = [(i,j) for i in 1:n for j in 1:n if i≠j] + +function generating_set(G::AutGroup{N}, n=N) where N + + rmuls = [Groups.rmul_autsymbol(i,j) for (i,j) in indexing(n)] + lmuls = [Groups.lmul_autsymbol(i,j) for (i,j) in indexing(n)] + gen_set = G.([rmuls; lmuls]) + + return [gen_set; inv.(gen_set)] +end + +function EltaryMat(M::MatAlgebra, i::Integer, j::Integer, val=1) + @assert i ≠ j + @assert 1 ≤ i ≤ nrows(M) + @assert 1 ≤ j ≤ ncols(M) + m = one(M) + m[i,j] = val + return m +end + +function generating_set(M::MatAlgebra, n=nrows(M)) + elts = [EltaryMat(M, i,j) for (i,j) in indexing(n)] + return elem_type(M)[elts; inv.(elts)] +end + +include("sqadjop.jl") diff --git a/src/PropertyT.jl b/src/PropertyT.jl index f082f5c..415d8a3 100644 --- a/src/PropertyT.jl +++ b/src/PropertyT.jl @@ -22,9 +22,8 @@ include("RGprojections.jl") include("orbitdata.jl") include("sos_sdps.jl") include("checksolution.jl") -include("sqadjop.jl") include("1712.07167.jl") - +include("1812.03456.jl") end # module Property(T) diff --git a/src/sqadjop.jl b/src/sqadjop.jl index 2fa94e1..b516d10 100644 --- a/src/sqadjop.jl +++ b/src/sqadjop.jl @@ -1,29 +1,3 @@ -indexing(n) = [(i,j) for i in 1:n for j in 1:n if i≠j] - -function generating_set(G::AutGroup{N}, n=N) where N - - rmuls = [Groups.rmul_autsymbol(i,j) for (i,j) in indexing(n)] - lmuls = [Groups.lmul_autsymbol(i,j) for (i,j) in indexing(n)] - gen_set = G.([rmuls; lmuls]) - - return [gen_set; inv.(gen_set)] -end - -function E(M::MatAlgebra, i::Integer, j::Integer, val=1) - @assert i ≠ j - @assert 1 ≤ i ≤ nrows(M) - @assert 1 ≤ j ≤ ncols(M) - m = one(M) - m[i,j] = val - return m -end - -function generating_set(M::MatAlgebra, n=M.n) - - elts = [E(M, i,j) for (i,j) in indexing(n)] - return elem_type(M)[elts; inv.(elts)] -end - isopposite(σ::perm, τ::perm, i=1, j=2) = σ[i] ≠ τ[i] && σ[i] ≠ τ[j] && σ[j] ≠ τ[i] && σ[j] ≠ τ[j] @@ -91,9 +65,6 @@ function Op(RG::GroupRing, N::Integer) return op÷factorial(N-2)^2 end -AbstractAlgebra.nrows(M::MatAlgebra) = M.n -AbstractAlgebra.ncols(M::MatAlgebra) = M.n - for Elt in [:Sq, :Adj, :Op] @eval begin $Elt(RG::GroupRing{AutGroup{N}}) where N = $Elt(RG, N) diff --git a/test/1812.03456.jl b/test/1812.03456.jl index 77c9191..7b6b121 100644 --- a/test/1812.03456.jl +++ b/test/1812.03456.jl @@ -9,8 +9,8 @@ for N in [3,4] M = MatrixAlgebra(zz, N) - @test PropertyT.E(M, 1, 2) isa MatAlgElem - e12 = PropertyT.E(M, 1, 2) + @test PropertyT.EltaryMat(M, 1, 2) isa MatAlgElem + e12 = PropertyT.EltaryMat(M, 1, 2) @test e12[1,2] == 1 @test inv(e12)[1,2] == -1 @@ -65,9 +65,9 @@ @test op == PropertyT.Op(RG) e = one(M) - g = PropertyT.E(M, 1,2) - h = PropertyT.E(M, 1,3) - k = PropertyT.E(M, 3,4) + g = PropertyT.EltaryMat(M, 1,2) + h = PropertyT.EltaryMat(M, 1,3) + k = PropertyT.EltaryMat(M, 3,4) edges = N*(N-1)÷2 @test sq[e] == 20*edges @@ -93,7 +93,7 @@ end @testset "1812.03456 examples" begin - function SOS_residual(x::GroupRingElem, Q::Matrix) + function SOS_residual(x::GroupRingElem, Q::Matrix) RG = parent(x) @time sos = PropertyT.compute_SOS(RG, Q); return x - sos