diff --git a/Project.toml b/Project.toml index cec494303ee9..a80b63710926 100644 --- a/Project.toml +++ b/Project.toml @@ -25,22 +25,22 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" cohomCalg_jll = "5558cf25-a90e-53b0-b813-cadaa3ae7ade" [compat] -AbstractAlgebra = "0.41.3" -AlgebraicSolving = "0.5.0" +AbstractAlgebra = "0.42.0" +AlgebraicSolving = "0.5.1" Distributed = "1.6" GAP = "0.10.2" -Hecke = "0.32.0" +Hecke = "0.33.0" JSON = "^0.20, ^0.21" JSON3 = "1.13.2" LazyArtifacts = "1.6" Markdown = "1.6" -Nemo = "0.45.5" +Nemo = "0.46.0" Pkg = "1.6" Polymake = "0.11.19" Random = "1.6" RandomExtensions = "0.4.3" Serialization = "1.6" -Singular = "0.23.1" +Singular = "0.23.4" TOPCOM_jll = "0.17.8" UUIDs = "1.6" cohomCalg_jll = "0.32.0" diff --git a/docs/src/Rings/rational.md b/docs/src/Rings/rational.md index 1fa833cd8f40..a110f13011dd 100644 --- a/docs/src/Rings/rational.md +++ b/docs/src/Rings/rational.md @@ -273,7 +273,7 @@ ERROR: DivideError: integer division error Test if ``a`` is an ``n``-th power. If so, return ```true``` and the root, ```false``` and any rational otherwise. -* `is_power(a::QQFieldElem) -> Int, QQFieldElem` +* `is_perfect_power_with_data(a::QQFieldElem) -> Int, QQFieldElem` Find the largest ``n`` such that ``a`` is an ``n``-th power. Return ``n`` and the root. @@ -288,7 +288,7 @@ julia> is_power(QQ(8), 3) julia> is_power(QQ(8), 2) (false, 8) -julia> is_power(QQ(9//16)) +julia> is_perfect_power_with_data(QQ(9//16)) (2, 3//4) julia> root(QQ(25//9), 2) diff --git a/experimental/IntersectionTheory/src/blowup.jl b/experimental/IntersectionTheory/src/blowup.jl index 800a48ef2458..859c62f00969 100644 --- a/experimental/IntersectionTheory/src/blowup.jl +++ b/experimental/IntersectionTheory/src/blowup.jl @@ -169,7 +169,7 @@ function present_finite_extension_ring(F::Oscar.AffAlgHom) y -= q * gensB_lift[i] end; ans) - FM = FreeModule(R, g) + FM = free_module(R, g) gB = elem_type(FM)[FM(push!([j == i ? R(1) : R() for j in 1:g-1], -gensB_lift[i])) for i in 1:g-1] gJ = elem_type(FM)[FM([j==i ? x : R() for j in 1:g]) for x in gens(J) for i in 1:g] U = vcat(gB, gJ) diff --git a/experimental/SymmetricIntersections/src/representations.jl b/experimental/SymmetricIntersections/src/representations.jl index db61a903ce0f..920583e4c19c 100644 --- a/experimental/SymmetricIntersections/src/representations.jl +++ b/experimental/SymmetricIntersections/src/representations.jl @@ -1062,7 +1062,7 @@ function _has_pfr(G::Oscar.GAPGroup, dim::Int) G_gap = G.X f_gap = GG.EpimorphismSchurCover(G_gap)::GapObj H_gap = GG.Source(f_gap)::GapObj - n, p = is_power(GG.Size(H_gap))::Tuple{Int, Int} + n, p = is_perfect_power_with_data(GG.Size(H_gap))::Tuple{Int, Int} if is_prime(p) fff_gap = GG.EpimorphismPGroup(H_gap, p)::GapObj E_gap = fff_gap(H_gap)::GapObj diff --git a/src/Groups/matrices/linear_isconjugate.jl b/src/Groups/matrices/linear_isconjugate.jl index ec339862db09..f6157fd61261 100644 --- a/src/Groups/matrices/linear_isconjugate.jl +++ b/src/Groups/matrices/linear_isconjugate.jl @@ -43,7 +43,7 @@ is_semisimple(x::MatrixGroupElem{T}) where T <: FinFieldElem = is_coprime(order( Return whether `x` is unipotent, i.e. its order is a power of the characteristic of its base ring. """ -is_unipotent(x::MatrixGroupElem{T}) where T <: FinFieldElem = isone(x) || is_power(order(Int, x))[2]==Int(characteristic(x.parent.ring)) +is_unipotent(x::MatrixGroupElem{T}) where T <: FinFieldElem = isone(x) || is_perfect_power_with_data(order(Int, x))[2]==Int(characteristic(x.parent.ring)) diff --git a/src/Groups/matrices/stuff_field_gen.jl b/src/Groups/matrices/stuff_field_gen.jl index 4b16c56fe12e..49c801c34eff 100644 --- a/src/Groups/matrices/stuff_field_gen.jl +++ b/src/Groups/matrices/stuff_field_gen.jl @@ -8,14 +8,14 @@ # changes the base ring of a polynomial ring into fqPolyRepFieldElem function _change_type(f::PolyRingElem{T}) where T <: FinFieldElem - e,p = is_power(order(base_ring(f))) + e,p = is_perfect_power_with_data(order(base_ring(f))) F = GF(Int(p),Int(e)) t = polynomial_ring(F,"t"; cached=false)[2] return sum([t^i*F(lift(coeff(f,i))) for i in 0:degree(f)]) end function _change_type(f::PolyRingElem{<: FqFieldElem}) - e,p = is_power(order(base_ring(f))) + e,p = is_perfect_power_with_data(order(base_ring(f))) F = GF(Int(p),Int(e)) t = polynomial_ring(F,"t"; cached=false)[2] return sum([t^i*F(lift(ZZ, coeff(f,i))) for i in 0:degree(f)]) diff --git a/src/Modules/UngradedModules/FreeMod.jl b/src/Modules/UngradedModules/FreeMod.jl index 56db787f548e..6531cf49367c 100644 --- a/src/Modules/UngradedModules/FreeMod.jl +++ b/src/Modules/UngradedModules/FreeMod.jl @@ -77,7 +77,7 @@ free_module(R::MPolyLocRing, p::Int, name::VarName = :e; cached::Bool = false) = free_module(R::MPolyQuoLocRing, p::Int, name::VarName = :e; cached::Bool = false) = FreeMod(R, p, name, cached = cached) #=XXX this cannot be as it is inherently ambiguous - - FreeModule(R, n) + - free_module(R, n) - direct sum of rings, ie. a ring - set of n-th powers of R thus the "category" needs to be set explicitly diff --git a/src/NumberTheory/GaloisGrp/GaloisGrp.jl b/src/NumberTheory/GaloisGrp/GaloisGrp.jl index e4dd9baec094..deede28529fd 100644 --- a/src/NumberTheory/GaloisGrp/GaloisGrp.jl +++ b/src/NumberTheory/GaloisGrp/GaloisGrp.jl @@ -2172,7 +2172,7 @@ function isinteger(GC::GaloisCtx{Hecke.qAdicRootCtx}, B::BoundRingElem{ZZRingEle p = GC.C.p if e.length<2 l = coeff(e, 0) - lz = lift(l) + lz = lift(ZZ, l) lz = Hecke.mod_sym(lz, ZZRingElem(p)^precision(l)) if abs(lz) < value(B) return true, lz diff --git a/src/NumberTheory/GaloisGrp/Qt.jl b/src/NumberTheory/GaloisGrp/Qt.jl index 2ee6a30bf6fd..6ebd02221c3a 100644 --- a/src/NumberTheory/GaloisGrp/Qt.jl +++ b/src/NumberTheory/GaloisGrp/Qt.jl @@ -652,7 +652,7 @@ function isinteger(G::GaloisCtx, B::BoundRingElem{Tuple{ZZRingElem, Int, QQField if c.length < 2 || all(x->iszero(coeff(c, x)), 1:c.length-1) cc = coeff(c, 0) - l = Hecke.mod_sym(lift(cc), pr^precision(cc)) + l = Hecke.mod_sym(lift(ZZ, cc), pr^precision(cc)) if abs(l) > pr^p[1] return false, x end diff --git a/test/Groups/matrixgroups.jl b/test/Groups/matrixgroups.jl index e20eeacd67fe..53873b2d814b 100644 --- a/test/Groups/matrixgroups.jl +++ b/test/Groups/matrixgroups.jl @@ -657,7 +657,7 @@ end @test parent(s)==G @test parent(u)==G @test is_coprime(order(s),3) - @test isone(u) || is_power(order(u))[2]==3 + @test isone(u) || is_perfect_power_with_data(order(u))[2]==3 @test is_semisimple(s) @test is_unipotent(u) @test s*u==G(x) diff --git a/test/Groups/subgroups_and_cosets.jl b/test/Groups/subgroups_and_cosets.jl index 807006b737be..35831c72e215 100644 --- a/test/Groups/subgroups_and_cosets.jl +++ b/test/Groups/subgroups_and_cosets.jl @@ -352,12 +352,12 @@ end Lo = [order(l) for l in L] @test length(Lo)==length(factor(order(G))) @test prod(Lo) == order(G) - @test [is_prime(is_power(l)[2]) for l in Lo] == [1 for i in 1:length(L)] + @test [is_prime(is_perfect_power_with_data(l)[2]) for l in Lo] == [1 for i in 1:length(L)] L = complement_system(G) Lo = [index(G,l) for l in L] @test length(Lo)==length(factor(order(G))) @test prod(Lo) == order(G) - @test [is_prime(is_power(l)[2]) for l in Lo] == [1 for i in 1:length(L)] + @test [is_prime(is_perfect_power_with_data(l)[2]) for l in Lo] == [1 for i in 1:length(L)] L = hall_system(symmetric_group(4)) @test is_subset(L[1], symmetric_group(4)) diff --git a/test/book/cornerstones/groups/auxiliary_code/main.jl b/test/book/cornerstones/groups/auxiliary_code/main.jl index b0f0320b1744..a45c4464a04a 100644 --- a/test/book/cornerstones/groups/auxiliary_code/main.jl +++ b/test/book/cornerstones/groups/auxiliary_code/main.jl @@ -1,5 +1,5 @@ import Pkg -Pkg.add(name="GenericCharacterTables", version=v"0.2"; io=devnull) +Pkg.add(name="GenericCharacterTables", version="0.2"; io=devnull) using GenericCharacterTables # for nicer printing using GenericCharacterTables: ParameterException diff --git a/test/book/cornerstones/number-theory/galoismod.jlcon b/test/book/cornerstones/number-theory/galoismod.jlcon index 7643ca5d472b..64c37466576c 100644 --- a/test/book/cornerstones/number-theory/galoismod.jlcon +++ b/test/book/cornerstones/number-theory/galoismod.jlcon @@ -88,4 +88,4 @@ julia> fl = is_free(M) false julia> defining_polynomial(K) -x^8 + 735*x^6 + 11340*x^4 + 33075*x^2 + 11025 +x^8 + 105*x^6 + 3465*x^4 + 44100*x^2 + 176400