From 443dd019b22c137f521598832b57b067a65165aa Mon Sep 17 00:00:00 2001 From: user202729 <25191436+user202729@users.noreply.github.com> Date: Mon, 3 Feb 2025 13:58:15 +0700 Subject: [PATCH] Make category(GF(3)[x]) enumerated --- src/sage/rings/polynomial/polynomial_ring.py | 4 ++-- .../polynomial/polynomial_ring_constructor.py | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/sage/rings/polynomial/polynomial_ring.py b/src/sage/rings/polynomial/polynomial_ring.py index aae41ffc0c2..a5cd012714a 100644 --- a/src/sage/rings/polynomial/polynomial_ring.py +++ b/src/sage/rings/polynomial/polynomial_ring.py @@ -275,7 +275,7 @@ def __init__(self, base_ring, name=None, sparse=False, implementation=None, and Category of commutative algebras over (finite enumerated fields and subquotients of monoids and quotients of semigroups) - and Category of infinite sets + and Category of infinite enumerated sets TESTS: @@ -1051,7 +1051,7 @@ def __iter__(self): sage: [*R] [0] sage: R. = QQ[] - sage: list(islice(iter(R), 10)) + sage: list(islice(iter(R), 10)) # when this is implemented add Enumerated() to category(R) Traceback (most recent call last): ... NotImplementedError: iteration over infinite base ring not yet implemented diff --git a/src/sage/rings/polynomial/polynomial_ring_constructor.py b/src/sage/rings/polynomial/polynomial_ring_constructor.py index 78074c8a1d2..f89ffdbc90a 100644 --- a/src/sage/rings/polynomial/polynomial_ring_constructor.py +++ b/src/sage/rings/polynomial/polynomial_ring_constructor.py @@ -892,6 +892,7 @@ def _multi_variate(base_ring, names, sparse=None, order='degrevlex', implementat from sage import categories from sage.categories.algebras import Algebras # Some fixed categories, in order to avoid the function call overhead +_EnumeratedSets = categories.sets_cat.Sets().Enumerated() _FiniteSets = categories.sets_cat.Sets().Finite() _InfiniteSets = categories.sets_cat.Sets().Infinite() _EuclideanDomains = categories.euclidean_domains.EuclideanDomains() @@ -938,12 +939,27 @@ def polynomial_default_category(base_ring_category, n_variables): True sage: QQ['s']['t'].category() is UniqueFactorizationDomains() & CommutativeAlgebras(QQ['s'].category()).WithBasis().Infinite() True + + TESTS:: + + sage: category(GF(7)['x']) + Join of Category of euclidean domains + and Category of algebras with basis over + (finite enumerated fields and subquotients of monoids + and quotients of semigroups) + and Category of commutative algebras over + (finite enumerated fields and subquotients of monoids + and quotients of semigroups) + and Category of infinite enumerated sets """ category = Algebras(base_ring_category).WithBasis() if n_variables: # here we assume the base ring to be nonzero category = category.Infinite() + if base_ring_category.is_subcategory(_FiniteSets) and n_variables == 1: + # base_ring_category.is_subcategory(_EnumeratedSets) suffices but this is not yet implemented + category = category.Enumerated() else: if base_ring_category.is_subcategory(_Fields): category = category & _Fields