Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ambiguities in AbstractAlgebra #1389

Open
lgoettgens opened this issue Jun 22, 2023 · 0 comments
Open

Ambiguities in AbstractAlgebra #1389

lgoettgens opened this issue Jun 22, 2023 · 0 comments

Comments

@lgoettgens
Copy link
Collaborator

Enabling the ambiguity report in test/Aqua.jl currently reports 622 ambiguities (with Julia 1.9). 587 of these are du to rand (see #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 (JuliaTesting/Aqua.jl#142) is available, i.e. master or v0.6.4 once it is released.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant