Skip to content

Can't invert an element of a matrix ring over an AcbField #2173

@rburing

Description

@rburing

Hi, I have some code that used to work that doesn't work anymore. Here is a minimal example:

               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.12.1 (2025-10-17)
 _/ |\__'_|_|_|\__'_|  |  Built by Homebrew (v1.12.1)
|__/                   |

julia> using Nemo

Welcome to Nemo version 0.52.3

Nemo comes with absolutely no warranty whatsoever

julia> CC = AcbField(53)
Complex Field with 53 bits of precision and error bounds

julia> A = identity_matrix(CC, 2)
[1.000000000000000                   0]
[                0   1.000000000000000]

julia> inv(A)
[1.000000000000000                   0]
[                0   1.000000000000000]

julia> R = matrix_ring(CC, 2)
Matrix ring of degree 2
  over complex Field with 53 bits of precision and error bounds

julia> B = R(A)
[1.000000000000000                   0]
[                0   1.000000000000000]

julia> inv(B)
ERROR: MethodError: no method matching _can_solve_internal_no_check(::AbstractAlgebra.Solve.LUTrait, ::AbstractAlgebra.Generic.MatSpaceElem{…}, ::AbstractAlgebra.Generic.MatSpaceElem{…}, ::Symbol; side::Symbol)
The function `_can_solve_internal_no_check` exists, but no method is defined for this combination of argument types.

Closest candidates are:
  _can_solve_internal_no_check(::AbstractAlgebra.Solve.LUTrait, ::AbstractAlgebra.Solve.SolveCtx{T, AbstractAlgebra.Solve.LUTrait}, ::MatElem{T}, ::Symbol; side) where T
   @ AbstractAlgebra ~/.julia/packages/AbstractAlgebra/L8iQ0/src/Solve.jl:1081
  _can_solve_internal_no_check(::AbstractAlgebra.Solve.HowellFormTrait, ::MatElem{T}, ::MatElem{T}, ::Symbol; side) where T
   @ AbstractAlgebra ~/.julia/packages/AbstractAlgebra/L8iQ0/src/Solve.jl:919
  _can_solve_internal_no_check(::AbstractAlgebra.Solve.RREFTrait, ::MatElem{T}, ::MatElem{T}, ::Symbol; side) where T
   @ AbstractAlgebra ~/.julia/packages/AbstractAlgebra/L8iQ0/src/Solve.jl:1014
  ...

Stacktrace:
 [1] _can_solve_internal(::AbstractAlgebra.Solve.LUTrait, A::AbstractAlgebra.Generic.MatSpaceElem{…}, b::AbstractAlgebra.Generic.MatSpaceElem{…}, task::Symbol; side::Symbol)
   @ AbstractAlgebra.Solve ~/.julia/packages/AbstractAlgebra/L8iQ0/src/Solve.jl:909
 [2] can_solve_with_solution(NF::AbstractAlgebra.Solve.LUTrait, A::AbstractAlgebra.Generic.MatSpaceElem{…}, b::AbstractAlgebra.Generic.MatSpaceElem{…}; side::Symbol)
   @ AbstractAlgebra.Solve ~/.julia/packages/AbstractAlgebra/L8iQ0/src/Solve.jl:649
 [3] can_solve_with_solution(A::AbstractAlgebra.Generic.MatSpaceElem{…}, b::AbstractAlgebra.Generic.MatSpaceElem{…}; side::Symbol)
   @ AbstractAlgebra.Solve ~/.julia/packages/AbstractAlgebra/L8iQ0/src/Solve.jl:645
 [4] can_solve_with_solution(A::AbstractAlgebra.Generic.MatSpaceElem{…}, b::AbstractAlgebra.Generic.MatSpaceElem{…})
   @ AbstractAlgebra.Solve ~/.julia/packages/AbstractAlgebra/L8iQ0/src/Solve.jl:644
 [5] can_solve_with_solution(M::AbstractAlgebra.Generic.MatRingElem{…}, B::AbstractAlgebra.Generic.MatRingElem{…})
   @ AbstractAlgebra.Generic ~/.julia/packages/AbstractAlgebra/L8iQ0/src/generic/MatRing.jl:63
 [6] inv(M::AbstractAlgebra.Generic.MatRingElem{AcbFieldElem})
   @ AbstractAlgebra ~/.julia/packages/AbstractAlgebra/L8iQ0/src/Matrix.jl:3718
 [7] top-level scope
   @ REPL[7]:1
Some type information was truncated. Use `show(err)` to see complete types.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions