Open
Description
Various parents need to create variable names (the polynomial rings, free algebras, groups, the symbolic ring, etc). We fusion all of them.
- the following will now raise
TypeError
sage: R.<a,b> = PolynomialRing(QQ, ('a', 'b'))
sage: A.<x,y,z> = FreeAlgebra(QQ, 'x,y,z')
(see the "polynomial ring" thread)
-
The many versions are
normalize_names
are fused insage.misc.variables.normalize_names
-
Deprecations:
- the
var_array
argument inPolynomialRing
- the methods
normalize_names
,_certify_name
ofCategoryObject
- the
-
Problems with injection of reserved names
sage: a = SR.var('or') # this should work
Traceback (most recent call last):
...
ValueError: The name "or" is not a valid Python identifier.
sage: QQ['or'].inject_variables() # this should not
Defining or
note: should take care of '_', 'True', 'False', 'None' and builtins (see the "reserved name for variables" thread)
As a sided effect, we got some speedup in polynomial ring creation!
See also:
- "polynomial ring (bis)" thread about the allowed form for creation of
PolynomialRing
,FreeAlgebra
, etc
CC: @mforets
Component: algebra
Author: Vincent Delecroix
Issue created by migration from https://trac.sagemath.org/ticket/18390