diff --git a/.github/workflows/Documentation.yml b/.github/workflows/Documentation.yml index ea7ed86f..0aef7c08 100644 --- a/.github/workflows/Documentation.yml +++ b/.github/workflows/Documentation.yml @@ -20,29 +20,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - - name: "Set up Julia" - uses: julia-actions/setup-julia@latest + - uses: julia-actions/setup-julia@v2 with: version: '1.10' - - - name: Restore cache - uses: julia-actions/cache@v1 - with: - cache-name: 'docs-1.10' - - - name: "Instantiate deps (including Oscar.jl master)" - shell: julia --project=docs/ --color=yes {0} - run: | - using Pkg - include(joinpath(pwd(), "etc", "add_oscar.jl")) - Pkg.develop(PackageSpec(path=pwd())) - Pkg.instantiate() - env: - JULIA_PKG_PRECOMPILE_AUTO: no - - - name: Build and deploy + - uses: julia-actions/cache@v1 + - uses: julia-actions/julia-buildpkg@v1 + - uses: julia-actions/julia-docdeploy@v1 env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # For authentication with GitHub Actions token - DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} # For authentication with SSH deploy key - run: julia --project=docs/ --color=yes docs/make.jl + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} diff --git a/.github/workflows/OscarTests.yml b/.github/workflows/OscarTests.yml index 9b7e1ca5..10e4950a 100644 --- a/.github/workflows/OscarTests.yml +++ b/.github/workflows/OscarTests.yml @@ -29,11 +29,9 @@ jobs: matrix: julia-version: - '1.6' - - '1.8' - - '1.9' - '1.10' - '1.11-nightly' - # - 'nightly' + - 'nightly' julia-arch: - x64 os: @@ -66,10 +64,21 @@ jobs: cache-name: julia-cache;workflow=${{ github.workflow }};julia=${{ matrix.julia-version }};arch=${{ runner.arch }} include-matrix: false - - name: "Add deps (including Oscar.jl master)" + - name: "Remove Oscar.jl compat" + shell: julia --color=yes {0} + run: | + using TOML + project = TOML.parsefile("Project.toml") + project["compat"]["Oscar"] = "1" + open("Project.toml", "w") do io + TOML.print(io, project) + end + + - name: "Dev Oscar.jl master" shell: julia --project=. --color=yes {0} run: | - include(joinpath(pwd(), "etc", "add_oscar.jl")) + using Pkg + Pkg.add(url="https://github.com/oscar-system/Oscar.jl", rev="master") env: JULIA_PKG_PRECOMPILE_AUTO: no diff --git a/.github/workflows/Tests.yml b/.github/workflows/Tests.yml index 22651763..4f28a066 100644 --- a/.github/workflows/Tests.yml +++ b/.github/workflows/Tests.yml @@ -29,11 +29,9 @@ jobs: matrix: julia-version: - '1.6' - - '1.8' - - '1.9' - '1.10' - '1.11-nightly' - # - 'nightly' + - 'nightly' julia-arch: - x64 os: diff --git a/OSCAR.rev b/OSCAR.rev deleted file mode 100644 index 291518bb..00000000 --- a/OSCAR.rev +++ /dev/null @@ -1 +0,0 @@ -376b3f013e4efb054fda6f65252a02cb9bbc1045 diff --git a/Project.toml b/Project.toml index 734c9cc0..0708c67d 100644 --- a/Project.toml +++ b/Project.toml @@ -1,13 +1,11 @@ name = "PBWDeformations" uuid = "5e7992ee-18b2-4301-9ba0-4f17696dc75a" authors = ["Lars Göttgens ", "Johannes Flake "] -version = "0.3.0-DEV" +version = "0.3.0" [deps] -AbstractAlgebra = "c3fe647b-3220-5bb0-a1ea-a7954cac585d" Oscar = "f1435218-dba5-11e9-1e4d-f1a5fab5fc13" [compat] -AbstractAlgebra = "0.40.0" -Oscar = "1.0" +Oscar = "~1.0.3" julia = "1.6" diff --git a/README.md b/README.md index ebca08bd..aa55eeb1 100644 --- a/README.md +++ b/README.md @@ -8,16 +8,11 @@ ## Install -To install this package in Julia, clone it from github and then run the following command in the Julia REPL from the package directory: +To install this package in Julia: ``` -using Pkg -Pkg.activate(".") -include(joinpath(pwd(), "etc", "add_oscar.jl")) -using PBWDeformations, Oscar +using Pkg; Pkg.add("PBWDeformations") ``` -This package depends on a development version of the [Oscar](https://oscar.computeralgebra.de/) package. The `add_oscar.jl` script will add the Oscar package to the current environment. If you want to use the package in a different environment, you can run the `add_oscar.jl` script int the other environment to obtain the specific version of Oscar. - ## Functionality The package will provide both a general framework and specialized functions in order to diff --git a/docs/src/index.md b/docs/src/index.md index a51ec70b..87bcba7f 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -17,16 +17,11 @@ To solve classification problems efficiently, we use representation theoretic id - For some modules of ``\mathfrak{so}_n``, give an explicit basis using arc diagrams or pseudographs (cf. [FM22](@cite)). ## Installation -o install this package in Julia, clone it from github and then run the following command in the Julia REPL from the package directory: +As this package heavily relies on [Oscar](https://oscar.computeralgebra.de/), it is recommended to install Oscar first ([installation instructions](https://oscar.computeralgebra.de/install/)). Then, install this package via the Julia package manager: ``` -using Pkg -Pkg.activate(".") -include(joinpath(pwd(), "etc", "add_oscar.jl")) -using PBWDeformations, Oscar +] add PBWDeformations ``` -This package depends on a development version of the [Oscar](https://oscar.computeralgebra.de/) package. The `add_oscar.jl` script will add the Oscar package to the current environment. If you want to use the package in a different environment, you can run the `add_oscar.jl` script int the other environment to obtain the specific version of Oscar. - ## Outline ```@contents Pages = [ diff --git a/etc/add_oscar.jl b/etc/add_oscar.jl deleted file mode 100644 index febb16bc..00000000 --- a/etc/add_oscar.jl +++ /dev/null @@ -1,3 +0,0 @@ -using Pkg -rev = readline("OSCAR.rev") -Pkg.add(PackageSpec(; url="https://github.com/oscar-system/Oscar.jl", rev)) diff --git a/src/DeformationBases/ArcDiagDeformBasis.jl b/src/DeformationBases/ArcDiagDeformBasis.jl index 16f06887..dc0aa40b 100644 --- a/src/DeformationBases/ArcDiagDeformBasis.jl +++ b/src/DeformationBases/ArcDiagDeformBasis.jl @@ -20,6 +20,9 @@ struct ArcDiagDeformBasis{C <: RingElem} <: DeformBasis{C} ) where {C <: RingElem} T = get_attribute(base_lie_algebra(sp), :type, nothing) @req T in [:special_orthogonal, :general_linear] "Only works for so_n and gl_n." + if T == :special_orthogonal && has_attribute(base_lie_algebra(sp), :form) + @req isone(get_attribute(base_lie_algebra(sp), :form)) "Only works for so_n represented as skew-symmetric matrices." + end return ArcDiagDeformBasis{C}(Val(T), sp, degs; no_normalize) end diff --git a/src/DeformationBases/PseudographDeformBasis.jl b/src/DeformationBases/PseudographDeformBasis.jl index 9d91bef7..9d9a3fa3 100644 --- a/src/DeformationBases/PseudographDeformBasis.jl +++ b/src/DeformationBases/PseudographDeformBasis.jl @@ -18,6 +18,9 @@ struct PseudographDeformBasis{C <: RingElem} <: DeformBasis{C} ) where {C <: RingElem} T = get_attribute(base_lie_algebra(sp), :type, nothing) @req T == :special_orthogonal "Only works for so_n." + if T == :special_orthogonal && has_attribute(base_lie_algebra(sp), :form) + @req isone(get_attribute(base_lie_algebra(sp), :form)) "Only works for so_n represented as skew-symmetric matrices." + end return PseudographDeformBasis{C}(Val(T), sp, degs; no_normalize) end diff --git a/src/LinearIndependence.jl b/src/LinearIndependence.jl index 784a3c45..f2fe6353 100644 --- a/src/LinearIndependence.jl +++ b/src/LinearIndependence.jl @@ -1,7 +1,7 @@ const _linear_independence_rref_cutoff = 0 function column_rref!(mat::MatElem{T}) where {T <: FieldElem} - rk = rref!(AbstractAlgebra.Solve.lazy_transpose(mat)) + rk = rref!(Oscar.AbstractAlgebra.Solve.lazy_transpose(mat)) return view(mat, :, 1:rk) end diff --git a/src/PBWDeformations.jl b/src/PBWDeformations.jl index 5272a8ef..5779f297 100644 --- a/src/PBWDeformations.jl +++ b/src/PBWDeformations.jl @@ -2,7 +2,7 @@ module PBWDeformations using Oscar -using AbstractAlgebra: ProductIterator +using Oscar.AbstractAlgebra: ProductIterator using Oscar: IntegerUnion @@ -20,12 +20,12 @@ using Oscar.LieAlgebras: permutations using Oscar.LieAlgebras: permutations_with_sign -import AbstractAlgebra: coefficient_ring -import AbstractAlgebra: elem_type -import AbstractAlgebra: gen -import AbstractAlgebra: gens -import AbstractAlgebra: ngens -import AbstractAlgebra: parent_type +import Oscar.AbstractAlgebra: coefficient_ring +import Oscar.AbstractAlgebra: elem_type +import Oscar.AbstractAlgebra: gen +import Oscar.AbstractAlgebra: gens +import Oscar.AbstractAlgebra: ngens +import Oscar.AbstractAlgebra: parent_type import Oscar: base_lie_algebra import Oscar: comm diff --git a/test/DeformationBases-test.jl b/test/DeformationBases-test.jl index bb8edaea..cc4cc331 100644 --- a/test/DeformationBases-test.jl +++ b/test/DeformationBases-test.jl @@ -1,7 +1,7 @@ @testset "DeformationBases/*.jl tests" begin @testset "ArcDiagDeformBasis.jl" begin @testset "arcdiag_to_deformationmap(:special_orthogonal, :exterior)" begin - L = special_orthogonal_lie_algebra(QQ, 4) + L = special_orthogonal_lie_algebra(QQ, 4, identity_matrix(QQ, 4)) T = Val(:special_orthogonal) V = exterior_power_obj(standard_module(L), 2) sp = smash_product(L, V) @@ -23,7 +23,7 @@ @testset "correctness regression" begin @testset "SO_4, ⋀²V" begin - L = special_orthogonal_lie_algebra(QQ, 4) + L = special_orthogonal_lie_algebra(QQ, 4, identity_matrix(QQ, 4)) V = exterior_power_obj(standard_module(L), 2) sp = smash_product(L, V) @@ -36,10 +36,10 @@ @test length(collect(b)) == 1 if VERSION <= v"1.7-" @test_broken repr("text/plain", collect(b)) == - "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_2_3 x_2_4 -x_1_3 -x_1_4 0; -x_2_3 0 x_3_4 x_1_2 0 -x_1_4; -x_2_4 -x_3_4 0 0 x_1_2 x_1_3; x_1_3 -x_1_2 0 0 x_3_4 -x_2_4; x_1_4 0 -x_1_2 -x_3_4 0 x_2_3; 0 x_1_4 -x_1_3 x_2_4 -x_2_3 0]" + "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_4 x_5 -x_2 -x_3 0; -x_4 0 x_6 x_1 0 -x_3; -x_5 -x_6 0 0 x_1 x_2; x_2 -x_1 0 0 x_6 -x_5; x_3 0 -x_1 -x_6 0 x_4; 0 x_3 -x_2 x_5 -x_4 0]" else @test repr("text/plain", collect(b)) == - "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_2_3 x_2_4 -x_1_3 -x_1_4 0; -x_2_3 0 x_3_4 x_1_2 0 -x_1_4; -x_2_4 -x_3_4 0 0 x_1_2 x_1_3; x_1_3 -x_1_2 0 0 x_3_4 -x_2_4; x_1_4 0 -x_1_2 -x_3_4 0 x_2_3; 0 x_1_4 -x_1_3 x_2_4 -x_2_3 0]" + "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_4 x_5 -x_2 -x_3 0; -x_4 0 x_6 x_1 0 -x_3; -x_5 -x_6 0 0 x_1 x_2; x_2 -x_1 0 0 x_6 -x_5; x_3 0 -x_1 -x_6 0 x_4; 0 x_3 -x_2 x_5 -x_4 0]" end @test all_pbwdeformations(sp, b; special_return=SMat)[1] == matrix(QQ, 1, 1, [1]) @test all_pbwdeformations(sp, b) == collect(b) @@ -54,7 +54,7 @@ end @testset "SO_5, ⋀²V" begin - L = special_orthogonal_lie_algebra(QQ, 5) + L = special_orthogonal_lie_algebra(QQ, 5, identity_matrix(QQ, 5)) V = exterior_power_obj(standard_module(L), 2) sp = smash_product(L, V) @@ -67,17 +67,17 @@ @test length(collect(b)) == 1 if VERSION <= v"1.7-" @test_broken repr("text/plain", collect(b)) == - "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_2_3 x_2_4 x_2_5 -x_1_3 -x_1_4 -x_1_5 0 0 0; -x_2_3 0 x_3_4 x_3_5 x_1_2 0 0 -x_1_4 -x_1_5 0; -x_2_4 -x_3_4 0 x_4_5 0 x_1_2 0 x_1_3 0 -x_1_5; -x_2_5 -x_3_5 -x_4_5 0 0 0 x_1_2 0 x_1_3 x_1_4; x_1_3 -x_1_2 0 0 0 x_3_4 x_3_5 -x_2_4 -x_2_5 0; x_1_4 0 -x_1_2 0 -x_3_4 0 x_4_5 x_2_3 0 -x_2_5; x_1_5 0 0 -x_1_2 -x_3_5 -x_4_5 0 0 x_2_3 x_2_4; 0 x_1_4 -x_1_3 0 x_2_4 -x_2_3 0 0 x_4_5 -x_3_5; 0 x_1_5 0 -x_1_3 x_2_5 0 -x_2_3 -x_4_5 0 x_3_4; 0 0 x_1_5 -x_1_4 0 x_2_5 -x_2_4 x_3_5 -x_3_4 0]" + "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_5 x_6 x_7 -x_2 -x_3 -x_4 0 0 0; -x_5 0 x_8 x_9 x_1 0 0 -x_3 -x_4 0; -x_6 -x_8 0 x_10 0 x_1 0 x_2 0 -x_4; -x_7 -x_9 -x_10 0 0 0 x_1 0 x_2 x_3; x_2 -x_1 0 0 0 x_8 x_9 -x_6 -x_7 0; x_3 0 -x_1 0 -x_8 0 x_10 x_5 0 -x_7; x_4 0 0 -x_1 -x_9 -x_10 0 0 x_5 x_6; 0 x_3 -x_2 0 x_6 -x_5 0 0 x_10 -x_9; 0 x_4 0 -x_2 x_7 0 -x_5 -x_10 0 x_8; 0 0 x_4 -x_3 0 x_7 -x_6 x_9 -x_8 0]" else @test repr("text/plain", collect(b)) == - "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_2_3 x_2_4 x_2_5 -x_1_3 -x_1_4 -x_1_5 0 0 0; -x_2_3 0 x_3_4 x_3_5 x_1_2 0 0 -x_1_4 -x_1_5 0; -x_2_4 -x_3_4 0 x_4_5 0 x_1_2 0 x_1_3 0 -x_1_5; -x_2_5 -x_3_5 -x_4_5 0 0 0 x_1_2 0 x_1_3 x_1_4; x_1_3 -x_1_2 0 0 0 x_3_4 x_3_5 -x_2_4 -x_2_5 0; x_1_4 0 -x_1_2 0 -x_3_4 0 x_4_5 x_2_3 0 -x_2_5; x_1_5 0 0 -x_1_2 -x_3_5 -x_4_5 0 0 x_2_3 x_2_4; 0 x_1_4 -x_1_3 0 x_2_4 -x_2_3 0 0 x_4_5 -x_3_5; 0 x_1_5 0 -x_1_3 x_2_5 0 -x_2_3 -x_4_5 0 x_3_4; 0 0 x_1_5 -x_1_4 0 x_2_5 -x_2_4 x_3_5 -x_3_4 0]" + "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_5 x_6 x_7 -x_2 -x_3 -x_4 0 0 0; -x_5 0 x_8 x_9 x_1 0 0 -x_3 -x_4 0; -x_6 -x_8 0 x_10 0 x_1 0 x_2 0 -x_4; -x_7 -x_9 -x_10 0 0 0 x_1 0 x_2 x_3; x_2 -x_1 0 0 0 x_8 x_9 -x_6 -x_7 0; x_3 0 -x_1 0 -x_8 0 x_10 x_5 0 -x_7; x_4 0 0 -x_1 -x_9 -x_10 0 0 x_5 x_6; 0 x_3 -x_2 0 x_6 -x_5 0 0 x_10 -x_9; 0 x_4 0 -x_2 x_7 0 -x_5 -x_10 0 x_8; 0 0 x_4 -x_3 0 x_7 -x_6 x_9 -x_8 0]" end @test all_pbwdeformations(sp, b; special_return=SMat)[1] == matrix(QQ, 1, 1, [1]) @test all_pbwdeformations(sp, b) == collect(b) end @testset "SO_4, S²V" begin - L = special_orthogonal_lie_algebra(QQ, 4) + L = special_orthogonal_lie_algebra(QQ, 4, identity_matrix(QQ, 4)) V = symmetric_power_obj(standard_module(L), 2) sp = smash_product(L, V) @@ -93,7 +93,7 @@ end @testset "SO_5, S²V" begin - L = special_orthogonal_lie_algebra(QQ, 5) + L = special_orthogonal_lie_algebra(QQ, 5, identity_matrix(QQ, 5)) V = symmetric_power_obj(standard_module(L), 2) sp = smash_product(L, V) @@ -109,7 +109,7 @@ end @testset "SO_2, T²V" begin - L = special_orthogonal_lie_algebra(QQ, 2) + L = special_orthogonal_lie_algebra(QQ, 2, identity_matrix(QQ, 2)) V = tensor_power_obj(standard_module(L), 2) sp = smash_product(L, V) @@ -120,7 +120,7 @@ end @testset "SO_3, T²V" begin - L = special_orthogonal_lie_algebra(QQ, 3) + L = special_orthogonal_lie_algebra(QQ, 3, identity_matrix(QQ, 3)) V = tensor_power_obj(standard_module(L), 2) sp = smash_product(L, V) @@ -135,7 +135,7 @@ PBWDeformations.arcdiag_to_deformationmap(PBWDeformations.SO(), arc_diagram(Undirected, diag), sp), ) - L = special_orthogonal_lie_algebra(QQ, 2) + L = special_orthogonal_lie_algebra(QQ, 2, identity_matrix(QQ, 2)) V = tensor_power_obj(standard_module(L), 3) sp = smash_product(L, V) @@ -156,7 +156,7 @@ PBWDeformations.arcdiag_to_deformationmap(PBWDeformations.SO(), arc_diagram(Undirected, diag), sp), ) - L = special_orthogonal_lie_algebra(QQ, 3) + L = special_orthogonal_lie_algebra(QQ, 3, identity_matrix(QQ, 3)) V = tensor_power_obj(standard_module(L), 3) sp = smash_product(L, V) @@ -181,7 +181,7 @@ @testset "PseudographDeformBasis.jl" begin @testset "correctness regression" begin @testset "SO_4, ⋀²V" begin - L = special_orthogonal_lie_algebra(QQ, 4) + L = special_orthogonal_lie_algebra(QQ, 4, identity_matrix(QQ, 4)) V = exterior_power_obj(standard_module(L), 2) sp = smash_product(L, V) @@ -194,10 +194,10 @@ @test length(collect(b)) == 1 if VERSION <= v"1.7-" @test_broken repr("text/plain", collect(b)) == - "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_2_3 x_2_4 -x_1_3 -x_1_4 0; -x_2_3 0 x_3_4 x_1_2 0 -x_1_4; -x_2_4 -x_3_4 0 0 x_1_2 x_1_3; x_1_3 -x_1_2 0 0 x_3_4 -x_2_4; x_1_4 0 -x_1_2 -x_3_4 0 x_2_3; 0 x_1_4 -x_1_3 x_2_4 -x_2_3 0]" + "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_4 x_5 -x_2 -x_3 0; -x_4 0 x_6 x_1 0 -x_3; -x_5 -x_6 0 0 x_1 x_2; x_2 -x_1 0 0 x_6 -x_5; x_3 0 -x_1 -x_6 0 x_4; 0 x_3 -x_2 x_5 -x_4 0]" else @test repr("text/plain", collect(b)) == - "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_2_3 x_2_4 -x_1_3 -x_1_4 0; -x_2_3 0 x_3_4 x_1_2 0 -x_1_4; -x_2_4 -x_3_4 0 0 x_1_2 x_1_3; x_1_3 -x_1_2 0 0 x_3_4 -x_2_4; x_1_4 0 -x_1_2 -x_3_4 0 x_2_3; 0 x_1_4 -x_1_3 x_2_4 -x_2_3 0]" + "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_4 x_5 -x_2 -x_3 0; -x_4 0 x_6 x_1 0 -x_3; -x_5 -x_6 0 0 x_1 x_2; x_2 -x_1 0 0 x_6 -x_5; x_3 0 -x_1 -x_6 0 x_4; 0 x_3 -x_2 x_5 -x_4 0]" end @test all_pbwdeformations(sp, b; special_return=SMat)[1] == matrix(QQ, 1, 1, [1]) @test all_pbwdeformations(sp, b) == collect(b) @@ -212,7 +212,7 @@ end @testset "SO_5, ⋀²V" begin - L = special_orthogonal_lie_algebra(QQ, 5) + L = special_orthogonal_lie_algebra(QQ, 5, identity_matrix(QQ, 5)) V = exterior_power_obj(standard_module(L), 2) sp = smash_product(L, V) @@ -225,10 +225,10 @@ @test length(collect(b)) == 1 if VERSION <= v"1.7-" @test_broken repr("text/plain", collect(b)) == - "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_2_3 x_2_4 x_2_5 -x_1_3 -x_1_4 -x_1_5 0 0 0; -x_2_3 0 x_3_4 x_3_5 x_1_2 0 0 -x_1_4 -x_1_5 0; -x_2_4 -x_3_4 0 x_4_5 0 x_1_2 0 x_1_3 0 -x_1_5; -x_2_5 -x_3_5 -x_4_5 0 0 0 x_1_2 0 x_1_3 x_1_4; x_1_3 -x_1_2 0 0 0 x_3_4 x_3_5 -x_2_4 -x_2_5 0; x_1_4 0 -x_1_2 0 -x_3_4 0 x_4_5 x_2_3 0 -x_2_5; x_1_5 0 0 -x_1_2 -x_3_5 -x_4_5 0 0 x_2_3 x_2_4; 0 x_1_4 -x_1_3 0 x_2_4 -x_2_3 0 0 x_4_5 -x_3_5; 0 x_1_5 0 -x_1_3 x_2_5 0 -x_2_3 -x_4_5 0 x_3_4; 0 0 x_1_5 -x_1_4 0 x_2_5 -x_2_4 x_3_5 -x_3_4 0]" + "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_5 x_6 x_7 -x_2 -x_3 -x_4 0 0 0; -x_5 0 x_8 x_9 x_1 0 0 -x_3 -x_4 0; -x_6 -x_8 0 x_10 0 x_1 0 x_2 0 -x_4; -x_7 -x_9 -x_10 0 0 0 x_1 0 x_2 x_3; x_2 -x_1 0 0 0 x_8 x_9 -x_6 -x_7 0; x_3 0 -x_1 0 -x_8 0 x_10 x_5 0 -x_7; x_4 0 0 -x_1 -x_9 -x_10 0 0 x_5 x_6; 0 x_3 -x_2 0 x_6 -x_5 0 0 x_10 -x_9; 0 x_4 0 -x_2 x_7 0 -x_5 -x_10 0 x_8; 0 0 x_4 -x_3 0 x_7 -x_6 x_9 -x_8 0]" else @test repr("text/plain", collect(b)) == - "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_2_3 x_2_4 x_2_5 -x_1_3 -x_1_4 -x_1_5 0 0 0; -x_2_3 0 x_3_4 x_3_5 x_1_2 0 0 -x_1_4 -x_1_5 0; -x_2_4 -x_3_4 0 x_4_5 0 x_1_2 0 x_1_3 0 -x_1_5; -x_2_5 -x_3_5 -x_4_5 0 0 0 x_1_2 0 x_1_3 x_1_4; x_1_3 -x_1_2 0 0 0 x_3_4 x_3_5 -x_2_4 -x_2_5 0; x_1_4 0 -x_1_2 0 -x_3_4 0 x_4_5 x_2_3 0 -x_2_5; x_1_5 0 0 -x_1_2 -x_3_5 -x_4_5 0 0 x_2_3 x_2_4; 0 x_1_4 -x_1_3 0 x_2_4 -x_2_3 0 0 x_4_5 -x_3_5; 0 x_1_5 0 -x_1_3 x_2_5 0 -x_2_3 -x_4_5 0 x_3_4; 0 0 x_1_5 -x_1_4 0 x_2_5 -x_2_4 x_3_5 -x_3_4 0]" + "1-element Vector{MatElem{<:FreeAssAlgElem{QQFieldElem}}}:\n [0 x_5 x_6 x_7 -x_2 -x_3 -x_4 0 0 0; -x_5 0 x_8 x_9 x_1 0 0 -x_3 -x_4 0; -x_6 -x_8 0 x_10 0 x_1 0 x_2 0 -x_4; -x_7 -x_9 -x_10 0 0 0 x_1 0 x_2 x_3; x_2 -x_1 0 0 0 x_8 x_9 -x_6 -x_7 0; x_3 0 -x_1 0 -x_8 0 x_10 x_5 0 -x_7; x_4 0 0 -x_1 -x_9 -x_10 0 0 x_5 x_6; 0 x_3 -x_2 0 x_6 -x_5 0 0 x_10 -x_9; 0 x_4 0 -x_2 x_7 0 -x_5 -x_10 0 x_8; 0 0 x_4 -x_3 0 x_7 -x_6 x_9 -x_8 0]" end @test all_pbwdeformations(sp, b; special_return=SMat)[1] == matrix(QQ, 1, 1, [1]) @test all_pbwdeformations(sp, b) == collect(b) diff --git a/test/ModuleSimpleStructure-test.jl b/test/ModuleSimpleStructure-test.jl index 1569822e..81c64dc1 100644 --- a/test/ModuleSimpleStructure-test.jl +++ b/test/ModuleSimpleStructure-test.jl @@ -1,5 +1,5 @@ @testset "ModuleSimpleStructure.jl tests" begin - @testset for L in [general_linear_lie_algebra(QQ, 3), special_orthogonal_lie_algebra(QQ, 3)] + @testset for L in [general_linear_lie_algebra(QQ, 3), special_orthogonal_lie_algebra(QQ, 3, identity_matrix(QQ, 3))] stdV = standard_module(L) @testset "Duality, standard" begin diff --git a/test/SmashProductLie-test.jl b/test/SmashProductLie-test.jl index f1d6a39a..54fcb7e0 100644 --- a/test/SmashProductLie-test.jl +++ b/test/SmashProductLie-test.jl @@ -49,7 +49,7 @@ end @testset "so_4(QQ) ⋉ ⋀^2 V" begin - L = special_orthogonal_lie_algebra(QQ, 4) + L = special_orthogonal_lie_algebra(QQ, 4, identity_matrix(QQ, 4)) V = exterior_power_obj(standard_module(L), 2) sp = smash_product(R, L, V) diff --git a/test/SmashProductLieDeform-test.jl b/test/SmashProductLieDeform-test.jl index e4915eb0..492a01ad 100644 --- a/test/SmashProductLieDeform-test.jl +++ b/test/SmashProductLieDeform-test.jl @@ -2,7 +2,7 @@ @testset "SmashProductLieDeform constructor" begin @testset "R = $R" for R in [QQ, cyclotomic_field(4)[1]] - L = special_orthogonal_lie_algebra(R, 4) + L = special_orthogonal_lie_algebra(R, 4, identity_matrix(R, 4)) V = exterior_power_obj(standard_module(L), 2) sp = smash_product(L, V) @@ -57,17 +57,20 @@ @testset "symmetric_deformation constructor" begin @testset "R = $R" for R in [QQ, cyclotomic_field(4)[1]] - for (sp, dimL, dimV) in [begin - L = special_orthogonal_lie_algebra(R, 4) - V = exterior_power_obj(standard_module(L), 2) - sp = smash_product(L, V) - return (sp, 6, 6) - end, begin - L = general_linear_lie_algebra(R, 4) - V = symmetric_power_obj(standard_module(L), 2) - sp = smash_product(L, V) - return (sp, 16, 10) - end] + for (sp, dimL, dimV) in [ + begin + L = special_orthogonal_lie_algebra(R, 4, identity_matrix(R, 4)) + V = exterior_power_obj(standard_module(L), 2) + sp = smash_product(L, V) + return (sp, 6, 6) + end, + begin + L = general_linear_lie_algebra(R, 4) + V = symmetric_power_obj(standard_module(L), 2) + sp = smash_product(L, V) + return (sp, 16, 10) + end, + ] d = symmetric_deformation(sp) @@ -100,7 +103,7 @@ @testset "SmashProductLieDeform sanitize checks" begin @testset "R = $R" for R in [QQ, cyclotomic_field(4)[1]] - L = special_orthogonal_lie_algebra(R, 4) + L = special_orthogonal_lie_algebra(R, 4, identity_matrix(R, 4)) V = exterior_power_obj(standard_module(L), 2) sp = smash_product(L, V) diff --git a/test/SmashProductPBWDeformLie-test.jl b/test/SmashProductPBWDeformLie-test.jl index 389978eb..68d45e06 100644 --- a/test/SmashProductPBWDeformLie-test.jl +++ b/test/SmashProductPBWDeformLie-test.jl @@ -1,7 +1,7 @@ @testset "SmashProductPBWDeformLie.jl tests" begin @testset "is_pbwdeformation" begin @testset "symmetric deformation of so_4(QQ) ⋉ ⋀^2 V" begin - L = special_orthogonal_lie_algebra(QQ, 4) + L = special_orthogonal_lie_algebra(QQ, 4, identity_matrix(QQ, 4)) V = exterior_power_obj(standard_module(L), 2) sp = smash_product(L, V) @@ -10,7 +10,7 @@ end @testset "non-PBW deformations" begin - L = special_orthogonal_lie_algebra(QQ, 4) + L = special_orthogonal_lie_algebra(QQ, 4, identity_matrix(QQ, 4)) V = exterior_power_obj(standard_module(L), 2) sp = smash_product(L, V)