From 74deb42f37297af89a58f1e20b9ac32624a95e3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Mu=C3=B1oz--Bertrand?= Date: Wed, 22 Oct 2025 19:46:33 +0200 Subject: [PATCH] Fix bug with creation of extensions of function fields --- .../rings/function_field/function_field.py | 15 ++++++++- .../function_field/function_field_rational.py | 32 ------------------- 2 files changed, 14 insertions(+), 33 deletions(-) diff --git a/src/sage/rings/function_field/function_field.py b/src/sage/rings/function_field/function_field.py index 2e2ece950ad..347c24a9ab8 100644 --- a/src/sage/rings/function_field/function_field.py +++ b/src/sage/rings/function_field/function_field.py @@ -467,9 +467,22 @@ def extension(self, f, names=None): sage: K.extension(t*y^3 + (1/t)*y + t^3/(t+1)) # needs sage.rings.function_field Function field in y defined by t*y^3 + 1/t*y + t^3/(t + 1) + + TESTS: + + Verify that :issue:`41095` has been resolved:: + + sage: K. = FunctionField(GF(2)) + sage: R. = PolynomialRing(K) + sage: L. = K.extension(t^2 + t*x) + sage: M. = L.extension(t^3 + x) + sage: M.base_ring() is K + False + sage: M.base_ring() is L + True """ from . import constructor - return constructor.FunctionFieldExtension(f, names) + return constructor.FunctionFieldExtension(f.change_ring(self), names) def order_with_basis(self, basis, check: bool = True): """ diff --git a/src/sage/rings/function_field/function_field_rational.py b/src/sage/rings/function_field/function_field_rational.py index ffc72b51f33..c9b4a9042d9 100644 --- a/src/sage/rings/function_field/function_field_rational.py +++ b/src/sage/rings/function_field/function_field_rational.py @@ -430,38 +430,6 @@ def _factor_univariate_polynomial(self, f, proof=None): from sage.structure.factorization import Factorization return Factorization(w, unit=unit) - def extension(self, f, names=None): - """ - Create an extension `L = K[y]/(f(y))` of the rational function field. - - INPUT: - - - ``f`` -- univariate polynomial over self - - - ``names`` -- string or length-1 tuple - - OUTPUT: a function field - - EXAMPLES:: - - sage: K. = FunctionField(QQ); R. = K[] - sage: K.extension(y^5 - x^3 - 3*x + x*y) # needs sage.rings.function_field - Function field in y defined by y^5 + x*y - x^3 - 3*x - - A nonintegral defining polynomial:: - - sage: K. = FunctionField(QQ); R. = K[] - sage: K.extension(y^3 + (1/t)*y + t^3/(t+1)) # needs sage.rings.function_field - Function field in y defined by y^3 + 1/t*y + t^3/(t + 1) - - The defining polynomial need not be monic or integral:: - - sage: K.extension(t*y^3 + (1/t)*y + t^3/(t+1)) # needs sage.rings.function_field - Function field in y defined by t*y^3 + 1/t*y + t^3/(t + 1) - """ - from . import constructor - return constructor.FunctionFieldExtension(f, names) - @cached_method def polynomial_ring(self, var='x'): """