AbstractAlgebra.jl icon indicating copy to clipboard operation
AbstractAlgebra.jl copied to clipboard

Ambiguities in AbstractAlgebra

Open lgoettgens opened this issue 1 year ago • 0 comments

Enabling the ambiguity report in test/Aqua.jl currently reports 622 ambiguities (with Julia 1.9). 587 of these are du to rand (see https://github.com/Nemocas/AbstractAlgebra.jl/issues/1388), which leaves 35.

Most of these seem to be some corner-cases regarding RingElement together with ad-hoc methods for Integer or Rational.

julia> Aqua.test_ambiguities(AbstractAlgebra; exclude=[rand])
35 ambiguities found
Ambiguity #1
(a::AbstractAlgebra.Generic.PolyRing{T})(b::Union{AbstractFloat, Integer, Rational}) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Poly.jl:349
(a::AbstractAlgebra.Generic.PolyRing{T})(b::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Poly.jl:355

Possible fix, define
  (::AbstractAlgebra.Generic.PolyRing{T})(::T) where T<:Union{AbstractFloat, Integer, Rational}

Ambiguity #2
(a::AbstractAlgebra.Generic.FracField{T})(b::T, c::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:84
(a::AbstractAlgebra.Generic.FracField{T})(b::Union{AbstractFloat, Integer, Rational}, c::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:120

Possible fix, define
  (::AbstractAlgebra.Generic.FracField{T})(::T, ::T) where T<:Union{AbstractFloat, Integer, Rational}

Ambiguity #3
valuation(z::AbstractAlgebra.FracElem{T}, p) where T @ AbstractAlgebra ~/code/AbstractAlgebra.jl/src/Fraction.jl:757
valuation(a::T, b::T) where T<:Union{Number, RingElement} @ AbstractAlgebra ~/code/AbstractAlgebra.jl/src/algorithms/GenericFunctions.jl:191

Possible fix, define
  valuation(::T, ::T) where T<:(AbstractAlgebra.FracElem)

Ambiguity #4
remove(z::AbstractAlgebra.FracElem{T}, p) where T @ AbstractAlgebra ~/code/AbstractAlgebra.jl/src/Fraction.jl:744
remove(a::T, b::T) where T<:Union{Number, RingElement} @ AbstractAlgebra ~/code/AbstractAlgebra.jl/src/algorithms/GenericFunctions.jl:168

Possible fix, define
  remove(::T, ::T) where T<:(AbstractAlgebra.FracElem)

Ambiguity #5
(a::AbstractAlgebra.Generic.FracField{T})(b::T, c::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:84
(a::AbstractAlgebra.Generic.FracField{T})(b::T, c::Union{AbstractFloat, Integer, Rational}) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:105

Possible fix, define
  (::AbstractAlgebra.Generic.FracField{T})(::T, ::T) where T<:Union{AbstractFloat, Integer, Rational}

Ambiguity #6
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T, c::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:565
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T, c::Union{Integer, Rational}) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:578

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::T, ::T) where T<:Union{Integer, Rational}

Ambiguity #7
(a::AbstractAlgebra.Generic.FracField{T})(b::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:77
(a::AbstractAlgebra.Generic.FracField{T})(b::Union{AbstractFloat, Integer}) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:140

Possible fix, define
  (::AbstractAlgebra.Generic.FracField{T})(::T) where T<:Union{AbstractFloat, Integer}

Ambiguity #8
promote(x::AbstractAlgebra.MatrixElem{S}, y::AbstractAlgebra.MatrixElem{T}) where {S<:Union{NCRingElem, RingElement}, T<:Union{NCRingElem, RingElement}} @ AbstractAlgebra ~/code/AbstractAlgebra.jl/src/Matrix.jl:964
promote(x::S, y::AbstractAlgebra.MatElem{T}) where {S<:Union{NCRingElem, RingElement}, T<:Union{NCRingElem, RingElement}} @ AbstractAlgebra ~/code/AbstractAlgebra.jl/src/Matrix.jl:1019

Possible fix, define
  promote(::S, ::AbstractAlgebra.MatElem{T}) where {S<:(AbstractAlgebra.MatAlgElem{S} where S<:Union{AbstractAlgebra.NCRingElem, AbstractAlgebra.RingElement}), T<:Union{AbstractAlgebra.NCRingElem, AbstractAlgebra.RingElement}}

Ambiguity #9
kwcall(::Any, ::typeof(AbstractAlgebra.divexact), a::Union{Integer, Rational}, b::AbstractAlgebra.Generic.FunctionFieldElem) @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/FunctionField.jl:1024
kwcall(::Any, ::typeof(AbstractAlgebra.divexact), a::T, b::AbstractAlgebra.Generic.FunctionFieldElem{T}) where T<:FieldElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/FunctionField.jl:1029

Possible fix, define
  kwcall(::Any, ::typeof(AbstractAlgebra.divexact), ::T, ::AbstractAlgebra.Generic.FunctionFieldElem{T}) where T<:Rational

Ambiguity #10
(a::AbstractAlgebra.Generic.SparsePolyRing{T})(b::Union{AbstractFloat, Integer, Rational}) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/SparsePoly.jl:1663
(a::AbstractAlgebra.Generic.SparsePolyRing{T})(b::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/SparsePoly.jl:1669

Possible fix, define
  (::AbstractAlgebra.Generic.SparsePolyRing{T})(::T) where T<:Union{AbstractFloat, Integer, Rational}

Ambiguity #11
(a::AbstractAlgebra.Generic.FracField{T})(b::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:77
(a::AbstractAlgebra.Generic.FracField{T})(b::Rational) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:146

Possible fix, define
  (::AbstractAlgebra.Generic.FracField{T})(::T) where T<:Rational

Ambiguity #12
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Union{Integer, Rational}, c::T, check) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:582
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Integer, c::Integer, check) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:590

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::Integer, ::T, ::Any) where T<:Integer

Ambiguity #13
(a::AbstractAlgebra.Generic.FracField{T})(b::T, c::Union{AbstractFloat, Integer, Rational}) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:105
(a::AbstractAlgebra.Generic.FracField{T})(b::Integer, c::Integer) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:153

Possible fix, define
  (::AbstractAlgebra.Generic.FracField{T})(::T, ::Integer) where T<:Integer

Ambiguity #14
(a::AbstractAlgebra.Generic.FracField{T})(b::T, c::Union{AbstractFloat, Integer, Rational}) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:105
(a::AbstractAlgebra.Generic.FracField{T})(b::Union{AbstractFloat, Integer, Rational}, c::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:120

Possible fix, define
  (::AbstractAlgebra.Generic.FracField{T})(::T, ::T) where T<:Union{AbstractFloat, Integer, Rational}

Ambiguity #15
(a::AbstractAlgebra.Generic.FracField{T})(b::Union{AbstractFloat, Integer, Rational}, c::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:120
(a::AbstractAlgebra.Generic.FracField{T})(b::Integer, c::Integer) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:153

Possible fix, define
  (::AbstractAlgebra.Generic.FracField{T})(::Integer, ::T) where T<:Integer

Ambiguity #16
(a::AbstractAlgebra.Generic.FracField{T})(b::T, c::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:84
(a::AbstractAlgebra.Generic.FracField{T})(b::Integer, c::Integer) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/Fraction.jl:153

Possible fix, define
  (::AbstractAlgebra.Generic.FracField{T})(::T, ::T) where T<:Integer

Ambiguity #17
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T, c::Union{Integer, Rational}, check) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:578
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Integer, c::Integer, check) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:590

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::T, ::Integer, ::Any) where T<:Integer

Ambiguity #18
promote_rule(::Type{T}, ::Type{T}) where T<:Union{NCRingElem, RingElement} @ AbstractAlgebra ~/code/AbstractAlgebra.jl/src/NCRings.jl:28
promote_rule(::Type{AbstractAlgebra.Generic.LaurentMPolyWrap{T, PE, LR}}, ::Type{U}) where {T, PE, LR, U} @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/LaurentMPoly.jl:598

Possible fix, define
  promote_rule(::Type{AbstractAlgebra.Generic.LaurentMPolyWrap{T, PE, LR}}, ::Type{AbstractAlgebra.Generic.LaurentMPolyWrap{T, PE, LR}}) where {T, PE, LR}

Ambiguity #19
evaluate(f::AbstractAlgebra.FracElem{T}, v::U) where {T<:PolyRingElem, U<:Integer} @ AbstractAlgebra ~/code/AbstractAlgebra.jl/src/Fraction.jl:625
evaluate(f::AbstractAlgebra.Generic.FactoredFrac{T}, v::U) where {T<:RingElement, U<:RingElement} @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/FactoredFraction.jl:430

Possible fix, define
  evaluate(::AbstractAlgebra.Generic.FactoredFrac{T}, ::U) where {T<:AbstractAlgebra.PolyRingElem, U<:Integer}

Ambiguity #20
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T, c::T, check) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:565
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T, c::Union{Integer, Rational}, check) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:578

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::T, ::T, ::Any) where T<:Union{Integer, Rational}

Ambiguity #21
(R::AbstractAlgebra.Generic.FunctionField{T})(a::T) where T<:FieldElem @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/FunctionField.jl:1267
(R::AbstractAlgebra.Generic.FunctionField{T})(a::AbstractAlgebra.Generic.FunctionFieldElem) where T<:FieldElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/FunctionField.jl:1281

Possible fix, define
  (::AbstractAlgebra.Generic.FunctionField{T})(::T) where T<:AbstractAlgebra.Generic.FunctionFieldElem

Ambiguity #22
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T, c::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:565
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Union{Integer, Rational}, c::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:582

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::T, ::T) where T<:Union{Integer, Rational}

Ambiguity #23
promote_rule(::Type{T}, ::Type{T}) where T<:Union{NCRingElem, RingElement} @ AbstractAlgebra ~/code/AbstractAlgebra.jl/src/NCRings.jl:28
promote_rule(::Type{AbstractAlgebra.Generic.LaurentPolyWrap{S, T, V}}, ::Type{U}) where {S, T, U, V} @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/LaurentPoly.jl:466

Possible fix, define
  promote_rule(::Type{AbstractAlgebra.Generic.LaurentPolyWrap{S, T, V}}, ::Type{AbstractAlgebra.Generic.LaurentPolyWrap{S, T, V}}) where {S, T, V}

Ambiguity #24
*(a::AbstractAlgebra.Generic.AbsMSeries, b::AbstractAlgebra.Generic.AbsMSeries) @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/AbsMSeries.jl:394
*(a::T, b::AbstractAlgebra.Generic.AbsMSeries{T}) where T<:RingElem @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/AbsMSeries.jl:414

Possible fix, define
  *(::T, ::AbstractAlgebra.Generic.AbsMSeries{T}) where T<:AbstractAlgebra.Generic.AbsMSeries

Ambiguity #25
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T, c::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:565
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Integer, c::Integer) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:590

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::T, ::T) where T<:Integer

Ambiguity #26
divexact(a::Union{Integer, Rational}, b::AbstractAlgebra.Generic.FunctionFieldElem; check) @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/FunctionField.jl:1024
divexact(a::T, b::AbstractAlgebra.Generic.FunctionFieldElem{T}; check) where T<:FieldElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/FunctionField.jl:1029

Possible fix, define
  divexact(::T, ::AbstractAlgebra.Generic.FunctionFieldElem{T}) where T<:Rational

Ambiguity #27
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T, c::Union{Integer, Rational}) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:578
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Union{Integer, Rational}, c::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:582

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::T, ::T) where T<:Union{Integer, Rational}

Ambiguity #28
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T, c::T, check) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:565
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Integer, c::Integer, check) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:590

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::T, ::T, ::Any) where T<:Integer

Ambiguity #29
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T, c::T, check) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:565
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Union{Integer, Rational}, c::T, check) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:582

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::T, ::T, ::Any) where T<:Union{Integer, Rational}

Ambiguity #30
promote(x::AbstractAlgebra.MatrixElem{S}, y::AbstractAlgebra.MatrixElem{T}) where {S<:Union{NCRingElem, RingElement}, T<:Union{NCRingElem, RingElement}} @ AbstractAlgebra ~/code/AbstractAlgebra.jl/src/Matrix.jl:964
promote(x::AbstractAlgebra.MatElem{S}, y::T) where {S<:Union{NCRingElem, RingElement}, T<:Union{NCRingElem, RingElement}} @ AbstractAlgebra ~/code/AbstractAlgebra.jl/src/Matrix.jl:1010

Possible fix, define
  promote(::AbstractAlgebra.MatElem{S}, ::T) where {S<:Union{AbstractAlgebra.NCRingElem, AbstractAlgebra.RingElement}, T<:(AbstractAlgebra.MatAlgElem{T} where T<:Union{AbstractAlgebra.NCRingElem, AbstractAlgebra.RingElement})}

Ambiguity #31
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Union{Integer, Rational}, c::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:582
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Integer, c::Integer) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:590

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::Integer, ::T) where T<:Integer

Ambiguity #32
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T, c::Union{Integer, Rational}) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:578
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Integer, c::Integer) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:590

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::T, ::Integer) where T<:Integer

Ambiguity #33
*(a::AbstractAlgebra.Generic.AbsMSeries, b::AbstractAlgebra.Generic.AbsMSeries) @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/AbsMSeries.jl:394
*(a::AbstractAlgebra.Generic.AbsMSeries{T}, b::T) where T<:RingElem @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/AbsMSeries.jl:424

Possible fix, define
  *(::AbstractAlgebra.Generic.AbsMSeries{T}, ::T) where T<:AbstractAlgebra.Generic.AbsMSeries

Ambiguity #34
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:557
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Union{Integer, Rational}) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:586

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::T) where T<:Union{Integer, Rational}

Ambiguity #35
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::T, c::Union{Integer, Rational}, check) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:578
(a::AbstractAlgebra.Generic.TotFracRing{T})(b::Union{Integer, Rational}, c::T, check) where T<:RingElement @ AbstractAlgebra.Generic ~/code/AbstractAlgebra.jl/src/generic/TotalFraction.jl:582

Possible fix, define
  (::AbstractAlgebra.Generic.TotFracRing{T})(::T, ::T, ::Any) where T<:Union{Integer, Rational}

Test Failed at /home/lgoe/.julia/packages/Aqua/BhBic/src/ambiguities.jl:123
  Expression: success(pipeline(cmd; stdout = stdout, stderr = stderr))

ERROR: There was an error during testing

To reproduce the above use any Aqua version where (https://github.com/JuliaTesting/Aqua.jl/pull/142) is available, i.e. master or v0.6.4 once it is released.

lgoettgens avatar Jun 22 '23 19:06 lgoettgens