From b5709713fb46a3f3d3750dc7a881f27f6899e491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20G=C3=B6ttgens?= Date: Thu, 10 Oct 2024 17:45:27 +0200 Subject: [PATCH 1/3] Add many `@req !is_trivial` checks --- src/MPoly.jl | 6 ++++-- src/NCPoly.jl | 6 ++++-- src/Residue.jl | 2 ++ src/generic/Misc/Localization.jl | 2 ++ 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/MPoly.jl b/src/MPoly.jl index 27c90aa8fc..4775b2da70 100644 --- a/src/MPoly.jl +++ b/src/MPoly.jl @@ -1655,5 +1655,7 @@ true Like [`polynomial_ring(R::Ring, s::Vector{Symbol})`](@ref) but return only the multivariate polynomial ring. """ -polynomial_ring_only(R::T, s::Vector{Symbol}; internal_ordering::Symbol=:lex, cached::Bool=true) where T<:Ring = - mpoly_ring_type(T)(R, s, internal_ordering, cached) +function polynomial_ring_only(R::T, s::Vector{Symbol}; internal_ordering::Symbol=:lex, cached::Bool=true) where T<:Ring + @req !is_trivial(R) "Zero rings are currently not supported as coefficient ring." + return mpoly_ring_type(T)(R, s, internal_ordering, cached) +end diff --git a/src/NCPoly.jl b/src/NCPoly.jl index 4758112d9d..2fe172d1f2 100644 --- a/src/NCPoly.jl +++ b/src/NCPoly.jl @@ -756,8 +756,10 @@ end Like [`polynomial_ring(R::NCRing, s::Symbol)`](@ref) but return only the polynomial ring. """ -polynomial_ring_only(R::T, s::Symbol; cached::Bool=true) where T<:NCRing = - poly_ring_type(T)(R, s, cached) +function polynomial_ring_only(R::T, s::Symbol; cached::Bool=true) where T<:NCRing + @req !is_trivial(R) "Zero rings are currently not supported as coefficient ring." + return poly_ring_type(T)(R, s, cached) +end # Simplified constructor diff --git a/src/Residue.jl b/src/Residue.jl index 7e412d8df9..f56c1e94a8 100644 --- a/src/Residue.jl +++ b/src/Residue.jl @@ -445,6 +445,7 @@ to the constructor with the same base ring $R$ and element $a$. A modulus of zero is not supported and throws an exception. """ function residue_ring(R::Ring, a::RingElement; cached::Bool = true) + @req !is_trivial(R) "Zero rings are currently not supported as base ring." # Modulus of zero cannot be supported. E.g. A C library could not be expected to # do matrices over Z/0 using a Z/nZ type. The former is multiprecision, the latter not. iszero(a) && throw(DomainError(a, "Modulus must be nonzero")) @@ -454,6 +455,7 @@ function residue_ring(R::Ring, a::RingElement; cached::Bool = true) end function residue_ring(R::PolyRing, a::RingElement; cached::Bool = true) + @req !is_trivial(R) "Zero rings are currently not supported as base ring." iszero(a) && throw(DomainError(a, "Modulus must be nonzero")) !is_unit(leading_coefficient(a)) && throw(DomainError(a, "Non-invertible leading coefficient")) T = elem_type(R) diff --git a/src/generic/Misc/Localization.jl b/src/generic/Misc/Localization.jl index e38a45b454..d8e26adde1 100644 --- a/src/generic/Misc/Localization.jl +++ b/src/generic/Misc/Localization.jl @@ -113,6 +113,8 @@ base_ring(L::LocalizedEuclideanRing) = L.base_ring::base_ring_type(L) parent(a::LocalizedEuclideanRingElem) = a.parent +characteristic(::LocalizedEuclideanRing) = characteristic(base_ring(L)) + ############################################################################### # # Basic manipulation From 8d3cd9bf4e29adbc47eeba3451af59a4cfdf8735 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 15 Dec 2025 22:34:53 +0100 Subject: [PATCH 2/3] Update src/generic/Misc/Localization.jl --- src/generic/Misc/Localization.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/generic/Misc/Localization.jl b/src/generic/Misc/Localization.jl index d8e26adde1..53f5d7f609 100644 --- a/src/generic/Misc/Localization.jl +++ b/src/generic/Misc/Localization.jl @@ -113,7 +113,6 @@ base_ring(L::LocalizedEuclideanRing) = L.base_ring::base_ring_type(L) parent(a::LocalizedEuclideanRingElem) = a.parent -characteristic(::LocalizedEuclideanRing) = characteristic(base_ring(L)) ############################################################################### # From 998c31f15654f37ceafe306b0b2271c5b074107f Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 15 Dec 2025 22:35:46 +0100 Subject: [PATCH 3/3] Update src/generic/Misc/Localization.jl --- src/generic/Misc/Localization.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/generic/Misc/Localization.jl b/src/generic/Misc/Localization.jl index 53f5d7f609..e38a45b454 100644 --- a/src/generic/Misc/Localization.jl +++ b/src/generic/Misc/Localization.jl @@ -113,7 +113,6 @@ base_ring(L::LocalizedEuclideanRing) = L.base_ring::base_ring_type(L) parent(a::LocalizedEuclideanRingElem) = a.parent - ############################################################################### # # Basic manipulation