thofma / Hecke.jl

Computational algebraic number theory
Other
210 stars 60 forks source link

Type piracy in Hecke #1126

Open fingolfin opened 1 year ago

fingolfin commented 1 year ago

Enabling the type piracy report in test/Aqua.jl currently reports 721 (!) instances of type piracy (with Julia 1.9). That's really bad, and might explain partially of why loading Hecke is comparatively slow.

UPDATE: we are down to 298 instances with Julia 1.10.3 and 1e5806b858ca0d7d776097decfda1a964b8218f7

I think many of these come from methods that really should be in Nemo, so perhaps we can start migrating some more. Perhaps @lgoettgens is interested in this?

Here is an excerpt:

julia> using Aqua, Hecke ; Aqua.test_piracies(Hecke);

Welcome to

    _    _           _
   | |  | |         | |
   | |__| | ___  ___| | _____
   |  __  |/ _ \/ __| |/ / _ \
   | |  | |  __/ (__|   <  __/
   |_|  |_|\___|\___|_|\_\___|

Version 0.31.5 ...
 ... which comes with absolutely no warranty whatsoever
(c) 2015-2024 by Claus Fieker, Tommy Hofmann and Carlo Sircana

Possible type-piracy detected:
[1] *(::ZZRing, x::Union{Integer, ZZRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/QQ.jl:42
[2] *(::ZZRing, x::Union{QQFieldElem, Rational}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/QQ.jl:62
[3] *(f::PolyRingElem{<:SeriesElem{QadicFieldElem}}, g::PolyRingElem{<:SeriesElem{QadicFieldElem}}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Series.jl:22
[4] *(R::Ring, x::Union{Integer, ZZRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/PIDIdeal.jl:41
[5] *(x::Union{Integer, ZZRingElem}, R::Ring) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/PIDIdeal.jl:43
[6] *(x::Union{Integer, ZZRingElem}, ::ZZRing) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/QQ.jl:44
[7] *(x::Union{QQFieldElem, Rational}, ::ZZRing) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/QQ.jl:60
[8] (K::AbsSimpleNumField)(c::Vector{QQFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:284
[9] (L::AbsSimpleNumField)(a::Vector) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:297
[10] (f::ComposedFunction{typeof(log), ComposedFunction{typeof(abs), T}})(x::Union{NumFieldOrderElem, NumFieldElem, FacElem}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/ComplexEmbeddings/Generic.jl:438
[11] (f::ComposedFunction{typeof(log), ComposedFunction{typeof(abs), T}})(x::Union{NumFieldOrderElem, NumFieldElem, FacElem}, prec::Int64) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/ComplexEmbeddings/Generic.jl:438
[12] (F::AbstractAlgebra.Generic.FunctionField{T})(p::PolyRingElem{<:AbstractAlgebra.Generic.RationalFunctionFieldElem{T}}) where T<:FieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:98
[13] (F::AbstractAlgebra.Generic.FunctionField)(c::Vector{<:RingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:107
[14] Int64(a::QQFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/RCF/autos.jl:629
[15] (::QQField)(a::LocalizedEuclideanRingElem{ZZRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:152
[16] (Q::QadicField)(a::PadicFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Ring.jl:121
[17] _hnf(x::MatElem{ZZRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Matrix.jl:163
[18] _hnf_with_transform(x::MatElem{ZZRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Matrix.jl:173
[19] absolute_degree(K::QadicField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/LocalField.jl:168
[20] absolute_degree(::PadicField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/LocalField.jl:164
[21] absolute_degree(::QQField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Field.jl:83
[22] absolute_degree(A::NumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Field.jl:75
[23] absolute_degree(K::NumField{QQFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Field.jl:79
[24] absolute_degree(F::FinField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/RelFiniteField.jl:74
[25] absolute_norm(a::QQPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:430
[26] absolute_norm(a::PadicFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Elem.jl:455
[27] absolute_norm(a::QadicFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Elem.jl:459
[28] absolute_norm(a::QQFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:400
[29] absolute_norm(a::T) where T<:NumFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:394
[30] absolute_norm(x::FinFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/RelFiniteField.jl:408
[31] absolute_norm(f::PolyRingElem{AbsSimpleNumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:432
[32] absolute_norm(f::PolyRingElem{<:NumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:436
[33] absolute_norm(a::T) where T<:Union{AbsNonSimpleNumFieldElem, AbsSimpleNumFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:398
[34] absolute_tr(a::QadicFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Elem.jl:504
[35] absolute_tr(a::PadicFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Elem.jl:500
[36] absolute_tr(a::AbsSimpleNumFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:383
[37] absolute_tr(x::QQFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:387
[38] absolute_tr(a::T) where T<:NumFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:379
[39] absolute_tr(x::FinFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/RelFiniteField.jl:416
[40] any_root(f::PolyRingElem{T}) where T<:FinFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Map/FiniteField.jl:149
[41] any_root(F::Union{FqField, fqPolyRepField, Hecke.RelFinField}, f::PolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/neq.jl:28
[42] base_field(Q::QadicField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:715
[43] basis(K::FinField, k::FinField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/neq.jl:82
[44] basis(F::AbstractAlgebra.Generic.FunctionField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:83
[45] basis(K::Union{QadicField, Hecke.LocalField}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/LocalField.jl:281
[46] charpoly(a::AbstractAlgebra.Generic.FunctionFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:113
[47] charpoly(f::AbstractAlgebra.Generic.Poly{T}, g::AbstractAlgebra.Generic.Poly{T}) where T<:Union{PadicFieldElem, QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:732
[48] coefficients(a::SimpleNumFieldElem; copy) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:271
[49] coefficients(f::AbstractAlgebra.Generic.FunctionFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:10
[50] kwcall(::NamedTuple, ::typeof(coefficients), a::SimpleNumFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:271
[51] conjugates(K::AbsSimpleNumField, p::Int64) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/conjugates.jl:75
[52] conjugates(x::QQFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Conjugates.jl:72
[53] conjugates(x::QQFieldElem, abs_tol::Int64) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Conjugates.jl:72
[54] conjugates(x::NumFieldElem, C::AcbField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Conjugates.jl:68
[55] conjugates(x::NumFieldElem, abs_tol::Int64, T) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Conjugates.jl:48
[56] conjugates(x::NumFieldElem, abs_tol::Int64) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Conjugates.jl:48
[57] conjugates(x::NumFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Conjugates.jl:48
[58] crt(r1::PolyRingElem{T}, m1::PolyRingElem{T}, r2::PolyRingElem{T}, m2::PolyRingElem{T}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/CRT.jl:276
[59] crt(r::Vector{T}, m::Vector{T}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/CRT.jl:335
[60] defining_polynomial(Q::QadicField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/qAdic.jl:91
[61] defining_polynomial(Q::QadicField, P::Ring) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/qAdic.jl:91
[62] degree(L::FinField, k::FinField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/neq.jl:3
[63] denominator(a::QQFieldElem, R::LocalizedEuclideanRing{ZZRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:150
[64] denominator(a::AbstractAlgebra.Generic.RationalFunctionFieldElem{T}, S::PolyRing{T}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:203
[65] dim(K::NumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Field.jl:61
[66] discriminant(F::AbstractAlgebra.Generic.FunctionField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:121
[67] discriminant(K::SimpleNumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/SimpleNumField/Field.jl:137
[68] divexact(f1::PolyRingElem{T}, g1::PolyRingElem{T}; check) where T<:Union{PadicFieldElem, QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:467
[69] kwcall(::NamedTuple, ::typeof(divexact), f1::PolyRingElem{T}, g1::PolyRingElem{T}) where T<:Union{PadicFieldElem, QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:467
[70] divisors(M::ZZMatrix, d::ZZRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Matrix.jl:842
[71] divrem(n::T, m::T) where T<:Union{ZZModRingElem, zzModRingElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/AlgAssAbsOrd/Conjugacy/Lifting.jl:208
[72] embed(f::Map{<:NumField, <:NumField}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NfAbs.jl:1048
[73] embed_any(k::FinField, K::FinField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Map/FiniteField.jl:97
[74] enumerate(G::AbstractAlgebra.Generic.SymmetricGroup{T}) where T<:Integer @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/AlgAss/AlgGrp.jl:275
[75] euler_phi(f::T) where T<:Union{FpPolyRingElem, fpPolyRingElem, fqPolyRepPolyRingElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/nmod_poly.jl:1267
[76] evaluate(x::QQFieldElem, ::PosInf, p::Int64) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/QQ.jl:295
[77] factor(a::AbstractAlgebra.Generic.MPoly{AbsSimpleNumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/MPolyFactor.jl:16
[78] factor(a::AbstractAlgebra.Generic.Poly{AbsSimpleNumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/MPolyFactor.jl:28
[79] factor(f::PolyRingElem{<:NumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:446
[80] factor(a::AbstractAlgebra.Generic.MPoly{<:NumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/MPolyFactor.jl:12
[81] factor(x::RingElement) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Hecke.jl:201
[82] factor_squarefree(a::AbstractAlgebra.Generic.MPoly{AbsSimpleNumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/MPolyFactor.jl:20
[83] factor_squarefree(a::AbstractAlgebra.Generic.MPoly{<:NumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/MPolyFactor.jl:24
[84] finite_field(f::T; ...) where T<:Union{FqPolyRepPolyRingElem, fqPolyRepPolyRingElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/RelFiniteField.jl:557
[85] finite_field(f::T, s::Union{Char, AbstractString, Symbol}; cached, check) where T<:Union{FqPolyRepPolyRingElem, fqPolyRepPolyRingElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/RelFiniteField.jl:557
[86] kwcall(::NamedTuple, ::typeof(Nemo.Native.finite_field), f::T) where T<:Union{FqPolyRepPolyRingElem, fqPolyRepPolyRingElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/RelFiniteField.jl:557
[87] kwcall(::NamedTuple, ::typeof(Nemo.Native.finite_field), f::T, s::Union{Char, AbstractString, Symbol}) where T<:Union{FqPolyRepPolyRingElem, fqPolyRepPolyRingElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/RelFiniteField.jl:557
[88] force_coerce(a::NumField{T}, b::NumFieldElem) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NfAbs.jl:916
[89] force_coerce(a::NumField{T}, b::NumFieldElem, throw_error_val::Val{throw_error}) where {T, throw_error} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NfAbs.jl:916
[90] force_op(op::Function, ::Val{throw_error}, a::NumFieldElem...) where throw_error @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NfAbs.jl:1158
[91] (R::fpPolyRing)(f::fqPolyRepPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:478
[92] (A::fqPolyRepField)(x::zzModPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/FiniteField.jl:22
[93] (A::fqPolyRepField)(x::fpPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/FiniteField.jl:31
[94] function_field(f::PolyRingElem{<:AbstractAlgebra.Generic.RationalFunctionFieldElem}, s::Union{Char, AbstractString, Symbol}; check, cached) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:75
[95] function_field(f::PolyRingElem{<:AbstractAlgebra.Generic.RationalFunctionFieldElem}; ...) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:75
[96] kwcall(::NamedTuple, ::typeof(function_field), f::PolyRingElem{<:AbstractAlgebra.Generic.RationalFunctionFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:75
[97] kwcall(::NamedTuple, ::typeof(function_field), f::PolyRingElem{<:AbstractAlgebra.Generic.RationalFunctionFieldElem}, s::Union{Char, AbstractString, Symbol}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:75
[98] gcd(a::AbstractAlgebra.Generic.Poly{AbsSimpleNumFieldElem}, b::AbstractAlgebra.Generic.Poly{AbsSimpleNumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Poly.jl:62
[99] gcd(a::AbstractAlgebra.Generic.Poly{AbsSimpleNumFieldElem}, b::AbstractAlgebra.Generic.Poly{AbsSimpleNumFieldElem}, test_sqfr::Bool) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Poly.jl:62
[100] gcd(f::AbstractAlgebra.Generic.Poly{T}, g::AbstractAlgebra.Generic.Poly{T}) where T<:Union{PadicFieldElem, QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:246
[101] gcdx(f::AbstractAlgebra.Generic.Poly{T}, g::AbstractAlgebra.Generic.Poly{T}) where T<:Union{PadicFieldElem, QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:382
[102] generator_minimum_polynomial(mp::Nemo.FinFieldMorphism{FqPolyRepField, FqPolyRepField}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Map/FiniteField.jl:145
[103] gens(L::QadicField, K::PadicField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/automorphisms.jl:214
[104] gens(L::FinField, l::FinField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/neq.jl:727
[105] getindex(K::Ring, G::AbstractAlgebra.Group) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/AlgAss/AlgGrp.jl:91
[106] hlift_have_lcs(A::E, Auf::Vector{E}, lcs::Vector{E}, mainvar::Int64, minorvars::Vector{Int64}, alphas::Vector) where E<:MPoly{AbsSimpleNumFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/MPolyFactor.jl:56
[107] hnf(x::T) where T<:MatElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Ideal.jl:235
[108] hnf(x::T, shape::Symbol) where T<:MatElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Ideal.jl:235
[109] hnf_modular(M::MatElem{T}, d::T) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:47
[110] hnf_modular(M::MatElem{T}, d::T, is_prime::Bool) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:47
[111] hom(K::PadicField, F::T; check) where T<:Union{PadicField, QadicField, LocalField} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/automorphisms.jl:142
[112] hom(F::FinField, K::FinField, a::FinFieldElem; check) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Map/FiniteField.jl:1
[113] hom(K::S, L::T, x...; inverse, check, compute_inverse) where {S<:Union{QQField, NumField}, T<:Ring} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Map/NumField.jl:137
[114] hom(K::S, L::T, x...; inverse, check, compute_inverse) where {S<:Union{QadicField, LocalField}, T<:Union{QadicField, LocalField}} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/map.jl:63
[115] kwcall(::NamedTuple, ::typeof(hom), K::PadicField, F::T) where T<:Union{PadicField, QadicField, LocalField} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/automorphisms.jl:142
[116] kwcall(::NamedTuple, ::typeof(hom), F::FinField, K::FinField, a::FinFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Map/FiniteField.jl:1
[117] kwcall(::NamedTuple, ::typeof(hom), K::S, L::T, x...) where {S<:Union{QQField, NumField}, T<:Ring} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Map/NumField.jl:137
[118] kwcall(::NamedTuple, ::typeof(hom), K::S, L::T, x...) where {S<:Union{QadicField, LocalField}, T<:Union{QadicField, LocalField}} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/map.jl:63
[119] howell_form(A::AbstractAlgebra.Generic.Mat{ZZModRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LinearAlgebra/Howell.jl:12
[120] howell_form!(A::AbstractAlgebra.Generic.Mat{ZZModRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LinearAlgebra/Howell.jl:28
[121] ideal(::ZZRing, x::ZZRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/QQ.jl:46
[122] ideal(::ZZRing, x::Integer) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/QQ.jl:48
[123] ideal(::ZZRing, x::AbstractVector{ZZRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/QQ.jl:50
[124] ideal(::ZZRing, x::AbstractVector{<:Integer}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/QQ.jl:52
[125] ideal(R::Field, x...) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/PIDIdeal.jl:62
[126] ideal(R::PolyRing{<:FieldElem}, x...) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/PIDIdeal.jl:58
[127] integral(f::RelPowerSeriesRingElem{T}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Series.jl:6
[128] inv(f::Nemo.FinFieldMorphism) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/RelFiniteField.jl:584
[129] invmod(u::AbstractAlgebra.Generic.Poly{PadicFieldElem}, f::AbstractAlgebra.Generic.Poly{PadicFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:296
[130] invmod(M::ZZMatrix, d::ZZRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Matrix.jl:963
[131] invmod(f::AbstractAlgebra.Generic.Poly{T}, M1::AbstractAlgebra.Generic.Poly{T}) where T<:Union{QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:337
[132] is_absolute(::NumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Field.jl:33
[133] is_absolute(::NumField{QQFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Field.jl:35
[134] is_domain_type(::Type{LocalizedEuclideanRingElem{ZZRingElem}}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:170
[135] is_hnf(x::ZZMatrix, shape::Symbol) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Matrix.jl:121
[136] is_irreducible(f::PolyRingElem{<:NumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:440
[137] is_irreducible(f::PolyRingElem{AbsSimpleNumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:413
[138] is_isomorphic(K::SimpleNumField, L::SimpleNumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/SimpleNumField/Field.jl:186
[139] is_power(a::AbsSimpleNumFieldElem, n::Int64; with_roots_unity, is_integral, trager) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:668
[140] kwcall(::NamedTuple, ::typeof(is_power), a::AbsSimpleNumFieldElem, n::Int64) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:668
[141] is_square(a::AbsSimpleNumFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:755
[142] is_square_with_sqrt(a::NumFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:757
[143] isreal(::PosInf) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/QQ.jl:186
[144] issubset(K::NumField, L::NumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Hecke.jl:654
[145] lcm(a::Vector{<:RingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:267
[146] length(a::AbsSimpleNumFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/conjugates.jl:125
[147] length(a::AbsSimpleNumFieldElem, p::Int64) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/conjugates.jl:125
[148] lift(R::zzModPolyRing, a::fqPolyRepFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumFieldOrd/NfOrd/Hensel.jl:67
[149] lift(x::fqPolyRepPolyRingElem, Kt) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:119
[150] lift(x::fqPolyRepFieldElem, Q::QadicField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:106
[151] lift(a::FqFieldElem, K::PadicField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:81
[152] lift(K::AbsSimpleNumField, f::FpPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumFieldOrd/NfOrd/Ideal/Prime.jl:136
[153] lift(K::AbsSimpleNumField, f::T) where T<:Union{fpPolyRingElem, zzModPolyRingElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumFieldOrd/NfOrd/Ideal/Prime.jl:124
[154] lift(f::T, Kt::PolyRing) where T<:FinFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:97
[155] lift(phi::Map, psi::Map) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GrpAb/ChainComplex.jl:20
[156] lift(a::T, K::PadicField) where T<:Union{EuclideanRingResidueRingElem{ZZRingElem}, ZZModRingElem, fpFieldElem, zzModRingElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:73
[157] lift!(A::ZZMatrix, B::FqMatrix) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/AlgAss/radical.jl:354
[158] lll(M::ArbMatrix; ctx) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/RieSrf/Theta.jl:255
[159] kwcall(::NamedTuple, ::typeof(lll), M::ArbMatrix) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/RieSrf/Theta.jl:255
[160] lll_with_transform(M::ArbMatrix; ctx) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/RieSrf/Theta.jl:259
[161] kwcall(::NamedTuple, ::typeof(lll_with_transform), M::ArbMatrix) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/RieSrf/Theta.jl:259
[162] localization(K::AbstractAlgebra.Generic.RationalFunctionField{T, U} where U<:Union{MPolyRingElem{T}, PolyRingElem{T}}, ::typeof(degree); cached) where T<:FieldElement @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/FunField/DegreeLocalization.jl:495
[163] kwcall(::NamedTuple, ::typeof(localization), K::AbstractAlgebra.Generic.RationalFunctionField{T, U} where U<:Union{MPolyRingElem{T}, PolyRingElem{T}}, ::typeof(degree)) where T<:FieldElement @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/FunField/DegreeLocalization.jl:495
[164] maketype(F::NumField{T}, ::Vector{<:NumFieldElem{T}}, ::AbstractUnitRange, ::Int64...) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:171
[165] mfactor_choose_eval_points!(alphas::Vector, A::E, mainvar::Int64, minorvars::Vector{Int64}, size::Int64) where E<:MPoly{AbsSimpleNumFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/MPolyFactor.jl:32
[166] minpoly(a::NumFieldElem, K::NumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/relative_extension.jl:62
[167] minpoly(a::NumFieldElem, ::QQField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/relative_extension.jl:76
[168] minpoly(a::AbstractAlgebra.Generic.FunctionFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:117
[169] minpoly(a::FinFieldElem, mp::Nemo.FinFieldMorphism) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Map/FiniteField.jl:131
[170] minpoly(a::T) where T<:Union{QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Elem.jl:532
[171] minpoly(a::T, Kx::PolyRing) where T<:Union{QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Elem.jl:532
[172] mod(b::AbsSimpleNumFieldElem, p::ZZRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:875
[173] mod(x::AbsSimpleNumFieldElem, y::Integer) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:885
[174] norm(a::QQPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:428
[175] norm(m::T, a::AbsSimpleNumFieldElem) where T<:(Map{AbsSimpleNumField, AbsSimpleNumField}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/RCF/conductor.jl:1574
[176] norm(a::FinFieldElem, mp::Nemo.FinFieldMorphism) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Map/FiniteField.jl:117
[177] norm(a::NumFieldElem, k::NumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:368
[178] norm(a::NumFieldElem, ::QQField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:372
[179] norm(f::PolyRingElem{fqPolyRepFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/RelFiniteField.jl:764
[180] norm(f::PolyRingElem{<:NumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:414
[181] norm(f::PolyRingElem{<:NumFieldElem}, k::NumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:421
[182] norm(f::PolyRingElem{AbsSimpleNumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:246
[183] norm(f::PolyRingElem{T}) where T<:Union{QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:717
[184] number_field(f::Vector{QQPolyRingElem}; ...) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:910
[185] number_field(f::Vector{QQPolyRingElem}, s::String; cached, check) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:910
[186] number_field(f::Vector{QQPolyRingElem}, S::Vector{Symbol}; cached, check) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:929
[187] number_field(f::Vector{QQPolyRingElem}, s::Union{Char, AbstractString, Symbol}; cached, check) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:920
[188] number_field(f::Vector{QQPolyRingElem}, s::Vector{<:Union{Char, AbstractString, Symbol}}; cached, check) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:924
[189] number_field(f::Vector{ZZPolyRingElem}; ...) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:945
[190] number_field(f::Vector{ZZPolyRingElem}, s::Union{Char, AbstractString, Symbol}; cached, check) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:945
[191] number_field(f::Vector{ZZPolyRingElem}, s::Vector{<:Union{Char, AbstractString, Symbol}}; cached, check) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:950
[192] number_field(fields::Vector{AbsSimpleNumField}; cached, check) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:880
[193] number_field(K1::AbsSimpleNumField, K2::AbsSimpleNumField; cached, check) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:871
[194] number_field(S::EuclideanRingResidueRing{QQPolyRingElem}; cached, check) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NfAbs.jl:32
[195] number_field(::PosInf) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/QQ.jl:221
[196] number_field(f::ZZPolyRingElem; cached, check) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NfAbs.jl:44
[197] number_field(f::ZZPolyRingElem, s::Union{Char, AbstractString, Symbol}; cached, check) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NfAbs.jl:39
[198] number_field(f::PolyRingElem{T}; ...) where T<:NumFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRel.jl:187
[199] number_field(f::PolyRingElem{T}, S::Union{Char, AbstractString, Symbol}; cached, check) where T<:NumFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRel.jl:187
[200] number_field(f::Array{AbstractAlgebra.Generic.Poly{T}, 1}, S::Vector{Symbol}; cached, check) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRelNS.jl:167
[201] number_field(f::Array{AbstractAlgebra.Generic.Poly{T}, 1}; ...) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRelNS.jl:180
[202] number_field(f::Array{AbstractAlgebra.Generic.Poly{T}, 1}, s::Union{Char, AbstractString, Symbol}; cached, check) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRelNS.jl:180
[203] kwcall(::NamedTuple, ::typeof(number_field), S::EuclideanRingResidueRing{QQPolyRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NfAbs.jl:32
[204] kwcall(::NamedTuple, ::typeof(number_field), f::Vector{QQPolyRingElem}, s::Union{Char, AbstractString, Symbol}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:920
[205] kwcall(::NamedTuple, ::typeof(number_field), f::Vector{QQPolyRingElem}, s::String) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:910
[206] kwcall(::NamedTuple, ::typeof(number_field), f::Vector{QQPolyRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:910
[207] kwcall(::NamedTuple, ::typeof(number_field), f::Vector{QQPolyRingElem}, s::Vector{<:Union{Char, AbstractString, Symbol}}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:924
[208] kwcall(::NamedTuple, ::typeof(number_field), f::Vector{QQPolyRingElem}, S::Vector{Symbol}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:929
[209] kwcall(::NamedTuple, ::typeof(number_field), f::Vector{ZZPolyRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:945
[210] kwcall(::NamedTuple, ::typeof(number_field), f::Vector{ZZPolyRingElem}, s::Vector{<:Union{Char, AbstractString, Symbol}}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:950
[211] kwcall(::NamedTuple, ::typeof(number_field), f::Vector{ZZPolyRingElem}, s::Union{Char, AbstractString, Symbol}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:945
[212] kwcall(::NamedTuple, ::typeof(number_field), fields::Vector{AbsSimpleNumField}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:880
[213] kwcall(::NamedTuple, ::typeof(number_field), K1::AbsSimpleNumField, K2::AbsSimpleNumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NonSimple.jl:871
[214] kwcall(::NamedTuple, ::typeof(number_field), f::ZZPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NfAbs.jl:44
[215] kwcall(::NamedTuple, ::typeof(number_field), f::ZZPolyRingElem, s::Union{Char, AbstractString, Symbol}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/NfAbs.jl:39
[216] kwcall(::NamedTuple, ::typeof(number_field), f::PolyRingElem{T}) where T<:NumFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRel.jl:187
[217] kwcall(::NamedTuple, ::typeof(number_field), f::PolyRingElem{T}, S::Union{Char, AbstractString, Symbol}) where T<:NumFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRel.jl:187
[218] kwcall(::NamedTuple, ::typeof(number_field), f::Array{AbstractAlgebra.Generic.Poly{T}, 1}, S::Vector{Symbol}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRelNS.jl:167
[219] kwcall(::NamedTuple, ::typeof(number_field), f::Array{AbstractAlgebra.Generic.Poly{T}, 1}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRelNS.jl:180
[220] kwcall(::NamedTuple, ::typeof(number_field), f::Array{AbstractAlgebra.Generic.Poly{T}, 1}, s::Union{Char, AbstractString, Symbol}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRelNS.jl:180
[221] numerator(a::QQFieldElem, R::LocalizedEuclideanRing{ZZRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:151
[222] numerator(a::AbstractAlgebra.Generic.RationalFunctionFieldElem{T}, S::PolyRing{T}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:199
[223] parent(t::Tuple) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GrpAb/GrpAbFinGen.jl:949
[224] pow(x, op, n, id) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GrpAb/GrpAbFinGen.jl:1884
[225] powermod(a::S, i::Union{Int64, ZZRingElem}, modu::Vector{S}) where {T<:RingElem, S<:MPolyRingElem{T}} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRelNSMor.jl:204
[226] powermod(f::Union{fpPolyRingElem, zzModPolyRingElem}, e::ZZRingElem, g::Union{fpPolyRingElem, zzModPolyRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/ModAlgAss/MeatAxe.jl:1175
[227] precision(g::AbstractAlgebra.Generic.Poly{T}) where T<:Union{PadicFieldElem, QadicFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:237
[228] prime_field(L::Union{QadicField, Hecke.LocalField}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/LocalField.jl:134
[229] pseudo_inv(a::Map) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Map/Map.jl:17
[230] quo(R::fqPolyRepPolyRing, f::fqPolyRepPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/nmod_poly.jl:1205
[231] quo(::ZZRing, a::ZZRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Integer.jl:753
[232] quo(::ZZRing, a::Integer) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Integer.jl:758
[233] rand(A::AbstractAlgebra.Generic.MatSpace{AbsSimpleNumFieldElem}, U::AbstractArray) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LinearAlgebra/Solve.jl:45
[234] rand(K::AbsSimpleNumField, U::AbstractArray) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LinearAlgebra/Solve.jl:19
[235] rand(b::Vector{<:NumFieldElem}, r::AbstractUnitRange) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:72
[236] rand(b::Vector{<:NumFieldElem}, r::AbstractUnitRange, terms::Int64) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:96
[237] rand(rng::Random.AbstractRNG, b::Vector{<:NumFieldElem}, r::AbstractUnitRange) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:74
[238] rand(rng::Random.AbstractRNG, b::Vector{<:NumFieldElem}, r::AbstractUnitRange, terms::Int64) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:100
[239] rand(rng::Random.AbstractRNG, sp::Random.SamplerTrivial{<:RandomExtensions.Make{var"#s979", Tuple{var"#s978", var"#s977", var"#s976"}} where {var"#s979"<:NumFieldElem{T}, var"#s978"<:NumField{T}, var"#s977"<:(Vector{<:NumFieldElem{T}}), var"#s976"<:AbstractUnitRange}}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:79
[240] rand(rng::Random.AbstractRNG, sp::Random.SamplerTrivial{<:RandomExtensions.Make{var"#s979", Tuple{var"#s978", var"#s977", var"#s976", Int64}} where {var"#s979"<:NumFieldElem{T}, var"#s978"<:NumField{T}, var"#s977"<:(Vector{<:NumFieldElem{T}}), var"#s976"<:AbstractUnitRange}}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:105
[241] rand!(a::AbsSimpleNumFieldElem, U::AbstractArray) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LinearAlgebra/Solve.jl:7
[242] rand!(c::T, b::Vector{T}, r::AbstractUnitRange, terms::Int64) where T<:NumFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:124
[243] rand!(c::T, b::Vector{T}, r::AbstractUnitRange) where T<:NumFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:163
[244] rand!(rng::Random.AbstractRNG, c::T, b::Vector{T}, r::AbstractUnitRange, terms::Int64) where T<:NumFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:128
[245] rand!(rng::Random.AbstractRNG, c::NumFieldElem{T}, sp::Random.SamplerTrivial{<:RandomExtensions.Make{var"#s979", Tuple{var"#s978", var"#s977", var"#s976", Int64}} where {var"#s979"<:NumFieldElem{T}, var"#s978"<:NumField{T}, var"#s977"<:(Vector{<:NumFieldElem{T}}), var"#s976"<:AbstractUnitRange}}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:132
[246] rand!(rng::Random.AbstractRNG, c::T, b::Vector{T}, r::AbstractUnitRange) where T<:NumFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:167
[247] rand!(rng::Random.AbstractRNG, c::NumFieldElem{T}, sp::Random.SamplerTrivial{<:RandomExtensions.Make{var"#s979", Tuple{var"#s978", var"#s977", var"#s976"}} where {var"#s979"<:NumFieldElem{T}, var"#s978"<:NumField{T}, var"#s977"<:(Vector{<:NumFieldElem{T}}), var"#s976"<:AbstractUnitRange}}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:173
[248] rand!(A::AbstractAlgebra.Generic.Mat{AbsSimpleNumFieldElem}, U::AbstractArray) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LinearAlgebra/Solve.jl:31
[249] reduce(u::Vector{T}) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumFieldOrd/NfOrd/Unit/Reduction.jl:88
[250] reduce(u::Vector{T}, prec::Int64) where T @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumFieldOrd/NfOrd/Unit/Reduction.jl:88
[251] rem(a::AbsSimpleNumFieldElem, b::ZZRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:888
[252] representation_matrix(a::AbstractAlgebra.Generic.FunctionFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:24
[253] residue_field(Q::PadicField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/qAdic.jl:38
[254] residue_field(R::fpPolyRing, p::fpPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Ideal.jl:578
[255] residue_field(R::FqPolyRing, p::FqPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Ideal.jl:583
[256] residue_field(Q::QadicField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/qAdic.jl:6
[257] residue_field(R::LocalizedEuclideanRing{ZZRingElem}, p::LocalizedEuclideanRingElem{ZZRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:163
[258] residue_field(S::SeriesRing{T}) where T<:RingElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Series.jl:225
[259] residue_field(R::PolyRing{T}, p::PolyRingElem{T}) where T<:NumFieldElem @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/GenOrd/Auxiliary.jl:92
[260] resultant(f::MPolyRingElem, g::MPolyRingElem, i::Int64) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRelNS.jl:613
[261] resultant(f::AbstractAlgebra.Generic.Poly{T}, g::AbstractAlgebra.Generic.Poly{T}) where T<:Union{PadicFieldElem, QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:540
[262] root(a::AbsSimpleNumFieldElem, n::Int64) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:761
[263] roots(K::AbsSimpleNumField, f::ZZPolyRingElem; kw...) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:529
[264] roots(K::AbsSimpleNumField, f::QQPolyRingElem; kw...) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:540
[265] roots(f::ZZPolyRingElem; max_roots) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Poly.jl:708
[266] roots(Q::QadicField, f::ZZPolyRingElem; max_roots) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Conjugates.jl:74
[267] roots(x::RealPoly) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Poly.jl:724
[268] roots(R::AcbField, f::Union{QQPolyRingElem, ZZPolyRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Poly.jl:719
[269] roots(R::AcbField, f::Union{QQPolyRingElem, ZZPolyRingElem}, abs_tol::Int64, initial_prec::Int64...) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Poly.jl:719
[270] roots(::QQField, f::ZZPolyRingElem; max_roots) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Poly.jl:671
[271] roots(R::ArbField, f::Union{QQPolyRingElem, ZZPolyRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Poly.jl:762
[272] roots(R::ArbField, f::Union{QQPolyRingElem, ZZPolyRingElem}, abs_tol::Int64, initial_prec::Int64...) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Poly.jl:762
[273] roots(f::AbstractAlgebra.Generic.Poly{AbsSimpleNumFieldElem}; max_roots, ispure, is_squarefree, is_normal) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:563
[274] roots(f::QQPolyRingElem; max_roots) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Poly.jl:713
[275] roots(a::AbsSimpleNumFieldElem, n::Int64) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:770
[276] roots(f::PolyRingElem{<:NumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:457
[277] roots(f::AbstractAlgebra.Generic.Poly{T}) where T<:Union{PadicFieldElem, QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/automorphisms.jl:7
[278] roots(F::Union{fqPolyRepField, Hecke.RelFinField}, f::Union{fpPolyRingElem, fqPolyRepPolyRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/neq.jl:33
[279] kwcall(::NamedTuple, ::typeof(roots), Q::QadicField, f::ZZPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Conjugates.jl:74
[280] kwcall(::NamedTuple, ::typeof(roots), f::QQPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Poly.jl:713
[281] kwcall(::NamedTuple, ::typeof(roots), K::AbsSimpleNumField, f::ZZPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:529
[282] kwcall(::NamedTuple, ::typeof(roots), K::AbsSimpleNumField, f::QQPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:540
[283] kwcall(::NamedTuple, ::typeof(roots), f::AbstractAlgebra.Generic.Poly{AbsSimpleNumFieldElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:563
[284] kwcall(::NamedTuple, ::typeof(roots), f::ZZPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Poly.jl:708
[285] kwcall(::NamedTuple, ::typeof(roots), ::QQField, f::ZZPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/Poly.jl:671
[286] setcoeff!(c::AbstractAlgebra.Generic.Poly{T}, n::Int64, a::T) where T<:Union{PadicFieldElem, QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:44
[287] setprecision(f::Function, K::Union{PadicField, QadicField, Hecke.LocalField}, n::Int64) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/LocalField.jl:384
[288] sign(x::Union{QQFieldElem, ZZRingElem, FacElem{QQFieldElem}}, p::PosInf) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/QQ.jl:201
[289] signature(K::AbsSimpleNumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Hecke.jl:322
[290] signature(K::NumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Field.jl:391
[291] sqrt(a::AbsSimpleNumFieldElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:759
[292] tr(a::FinFieldElem, mp::Nemo.FinFieldMorphism) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Map/FiniteField.jl:104
[293] tr(a::NumFieldElem, k::NumField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:356
[294] tr(a::NumFieldElem, ::QQField) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:360
[295] use_karamul(a::PolyRingElem{T}, b::PolyRingElem{T}) where T<:Union{PadicFieldElem, QadicFieldElem, LocalFieldElem} @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/LocalField/Poly.jl:57
[296] valuation(f::ZZPolyRingElem, p::Union{Int64, ZZRingElem}) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumFieldOrd/NfOrd/MaxOrd/Polygons.jl:274
[297] valuation(::NumFieldElem, p) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/Elem.jl:618
[298] (Rxy::zzModMPolyRing)(f::QQMPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfRel/NfRelNSMor.jl:68
lgoettgens commented 1 year ago

I will look into that next week.

What is the way to do such changes? The following or am I missing something important?

  1. Add f to Nemo
  2. minor Nemo release
  3. adjust Nemo compat in Hecke
  4. remove f from Hecke

If I am not mistaken, that should leave no combination of versions, where f is not available. There would be cases, where f is contained twice, but that should be ok, right? Alternatively, one could circumvent that by making a breaking Nemo release such that the Nemo compat in Hecke doesn't allow the new Nemo version.

thofma commented 1 year ago

Since this is quite disruptive with little (no?) gain, I would suggest to put this on the back burner.

fingolfin commented 1 year ago

One gain is reduced load time for Hecke and Oscar. Isn't that a major issue for us?

thofma commented 1 year ago

It is roughly 1 second for me. Sure, 0.x (0.9? 0.6?) seconds would be great, but I believe the ratio of gain and work is quite low compared to some other open issues in Oscar land.

lgoettgens commented 1 year ago

Another possible benefit I can see is that future changes (in particular bug fixes and interface changes) need fewer cross-project PRs. If everything (or most) functionality of a type is contained in a single package (here Nemo), there is less need for sibling PRs in Hecke and Nemo.

And I believe most of the work needed here is only simply copy-pasting the methods in the Aqua output.

fieker commented 1 year ago

It's more complicated as there are false positives...

On Fri, 16 Jun 2023, 15:35 Lars Göttgens, @.***> wrote:

Another possible benefit I can see is that future changes (in particular bug fixes and interface changes) need fewer cross-project PRs. If everything (or most) functionality of a type is contained in a single package (here Nemo), there is less need for sibling PRs in Hecke and Nemo.

And I believe most of the work needed here is only simply copy-pasting the methods in the Aqua output.

— Reply to this email directly, view it on GitHub https://github.com/thofma/Hecke.jl/issues/1126#issuecomment-1594687706, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA36CV34MGKIUTWFHUFQ7ALXLROK3ANCNFSM6AAAAAAZI5ZL7Q . You are receiving this because you are subscribed to this thread.Message ID: @.***>

lgoettgens commented 1 year ago

It's more complicated as there are false positives...

I thought Aqua was very conservative with reporting type piracy. If there are indeed false positives, I would be very inclined to analyze them and report a fix to Aqua.

thofma commented 1 year ago

I think the point is that it is not black and white what type piracy is. Is

*(x::Union{Integer, ZZRingElem}, ::ZZRing)

in Hecke type piracy? It might be the case that this cannot be implemented in Nemo alone. So why would this constitute any form of piracy? Also it is not invalidating any other method in Nemo.

fingolfin commented 7 months ago

Just a small update, we are down from 721 to 316 cases, so that's great.

And yeah, we may not be able to resolve all of them for various reasons. But some maybe can...

Some things that could perhaps be moved to AA or Nemo, which would also remove some type piracy

Then there are still many small convenience functions that probably could be moved, e.g.:

[100] (R::fpPolyRing)(f::fqPolyRepPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/NumField/NfAbs/Elem.jl:480
[101] (A::fqPolyRepField)(x::zzModPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/FiniteField.jl:22
[102] (A::fqPolyRepField)(x::fpPolyRingElem) @ Hecke ~/Projekte/OSCAR/Hecke.jl/src/Misc/FiniteField.jl:31

or

#TODO: move elsewhere?
function Hecke.lcm(a::Vector{<:RingElem})
  if length(a) == 0
    error("don't know the ring")
  end
  return reduce(lcm, a)
end

etc.