oscar-system / Oscar.jl

A comprehensive open source computer algebra system for computations in algebra, geometry, and number theory.
https://www.oscar-system.org
Other
338 stars 120 forks source link

Root System code (experimental/LieAlgebras/src/RootSystem.jl) #3152

Closed voggesbe closed 8 months ago

voggesbe commented 8 months ago

Describe the bug When calling the roots of certain root systems, the programme returns the wrong roots. In my case, I was working with D6 and got 72 roots. However, this should only be 60 roots. Also, the root vectors are wrong. One can check GAP e.g. for comparison.

To Reproduce

using Oscar
# Julia code

R = root_system(:D, 6);
ro = [root(R, i).vec for i = 1:num_roots(R)]

Expected behavior As mentioned above, the roots in ro should look different and there should only be 60 of them. A correct output for ro would be given when using the following code in julia:

using Oscar
# Julia code

    S1 = GAP.Obj(:D)
    RS = GAP.Globals.RootSystem(S1, 6)
    sR = Vector{Vector{Int}}(GAP.Globals.SimpleSystem(RS))
    Ro1 = Vector{Vector{Int}}(GAP.Globals.PositiveRoots(RS))
    Ro2 = Vector{Vector{Int}}(GAP.Globals.NegativeRoots(RS))
    Ro = vcat(Ro1, Ro2)

System (please complete the following information): Please paste the output of Oscar.versioninfo(full=true) below. If this does not work, please paste the output of Julia's versioninfo() and your Oscar version.


julia> Oscar.versioninfo(full=true)
OSCAR version 0.14.0-DEV - #master, cd6347968b -- 2023-11-15 09:53:42 +0100
  combining:
    AbstractAlgebra.jl   v0.33.0
    GAP.jl               v0.10.0
    Hecke.jl             v0.22.6
    Nemo.jl              v0.37.4
    Polymake.jl          v0.11.8
    Singular.jl          v0.19.0
  building on:
    Antic_jll               v0.201.500+0
    Arb_jll                 v200.2300.0+0
    Calcium_jll             v0.401.100+0
    FLINT_jll               v200.900.7+0
    GAP_jll                 v400.1200.200+7
    Singular_jll            v403.210.1000+0
    libpolymake_julia_jll   v0.11.0+0
    libsingular_julia_jll   v0.40.6+0
    polymake_jll            v400.1100.0+0
See `]st -m` for a full list of dependencies.

Julia Version 1.9.2
Commit e4ee485e909 (2023-07-05 09:39 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 16 × 12th Gen Intel(R) Core(TM) i5-1250P
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, alderlake)
  Threads: 1 on 16 virtual cores
Official https://julialang.org/ release
joschmitt commented 8 months ago

I think this is fixed in the current version of OSCAR?

julia> R = root_system(:D, 6);

julia> ro = [root(R, i).vec for i = 1:num_roots(R)]
60-element Vector{QQMatrix}:
 [1   0   0   0   0   0]
 [0   1   0   0   0   0]
 [0   0   1   0   0   0]
...
julia> Oscar.versioninfo(full=true)
OSCAR version 0.14.0-DEV - #master, b7026701fb -- 2024-01-02 16:57:56 +0000
  combining:
    AbstractAlgebra.jl   v0.34.7
    GAP.jl               v0.10.1
    Hecke.jl             v0.23.3 - #eigen, 6031809361 -- 2024-01-04 15:30:54 +0100
    Nemo.jl              v0.38.3
    Polymake.jl          v0.11.9
    Singular.jl          v0.21.1
  building on:
    Antic_jll               v0.201.500+0
    Arb_jll                 v200.2300.0+0
    Calcium_jll             v0.401.100+0
    FLINT_jll               v200.900.7+0
    GAP_jll                 v400.1200.200+7
    Singular_jll            v403.212.1202+0
    libpolymake_julia_jll   v0.11.2+0
    libsingular_julia_jll   v0.40.9+0
    polymake_jll            v400.1100.1+0
See `]st -m` for a full list of dependencies.

Julia Version 1.10.0
Commit 3120989f39b (2023-12-25 18:01 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 20 × 13th Gen Intel(R) Core(TM) i5-13600
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, goldmont)
  Threads: 1 on 20 virtual cores
Environment:
  JULIA_EDITOR = vim
Official https://julialang.org/ release
lgoettgens commented 8 months ago

This has already been fixed in https://github.com/oscar-system/Oscar.jl/pull/2982.