Subrings of the Symbolic Ring¶
Subrings of the symbolic ring can be created via the
subring()
method of
SR
. This will call SymbolicSubring
of this module.
The following kinds of subrings are supported:
A symbolic subring of expressions, whose variables are contained in a given set of symbolic variables (see
SymbolicSubringAcceptingVars
). E.g.sage: SR.subring(accepting_variables=('a', 'b')) Symbolic Subring accepting the variables a, b
>>> from sage.all import * >>> SR.subring(accepting_variables=('a', 'b')) Symbolic Subring accepting the variables a, b
SR.subring(accepting_variables=('a', 'b'))
A symbolic subring of expressions, whose variables are disjoint to a given set of symbolic variables (see
SymbolicSubringRejectingVars
). E.g.sage: SR.subring(rejecting_variables=('r', 's')) Symbolic Subring rejecting the variables r, s
>>> from sage.all import * >>> SR.subring(rejecting_variables=('r', 's')) Symbolic Subring rejecting the variables r, s
SR.subring(rejecting_variables=('r', 's'))
The subring of symbolic constants (see
SymbolicConstantsSubring
). E.g.sage: SR.subring(no_variables=True) Symbolic Constants Subring
>>> from sage.all import * >>> SR.subring(no_variables=True) Symbolic Constants Subring
SR.subring(no_variables=True)
AUTHORS:
Daniel Krenn (2015)
Classes and Methods¶
- class sage.symbolic.subring.GenericSymbolicSubring(vars)[source]¶
Bases:
SymbolicRing
An abstract base class for a symbolic subring.
INPUT:
vars
– tuple of symbolic variables
- has_valid_variable(variable)[source]¶
Return whether the given
variable
is valid in this subring.INPUT:
variable
– a symbolic variable
OUTPUT: boolean
EXAMPLES:
sage: from sage.symbolic.subring import GenericSymbolicSubring sage: GenericSymbolicSubring(vars=tuple()).has_valid_variable(x) Traceback (most recent call last): ... NotImplementedError: Not implemented in this abstract base class
>>> from sage.all import * >>> from sage.symbolic.subring import GenericSymbolicSubring >>> GenericSymbolicSubring(vars=tuple()).has_valid_variable(x) Traceback (most recent call last): ... NotImplementedError: Not implemented in this abstract base class
from sage.symbolic.subring import GenericSymbolicSubring GenericSymbolicSubring(vars=tuple()).has_valid_variable(x)
- class sage.symbolic.subring.GenericSymbolicSubringFunctor(vars)[source]¶
Bases:
ConstructionFunctor
A base class for the functors constructing symbolic subrings.
INPUT:
vars
– tuple, set, or other iterable of symbolic variables
EXAMPLES:
sage: from sage.symbolic.subring import SymbolicSubring sage: SymbolicSubring(no_variables=True).construction()[0] # indirect doctest Subring<accepting no variable>
>>> from sage.all import * >>> from sage.symbolic.subring import SymbolicSubring >>> SymbolicSubring(no_variables=True).construction()[Integer(0)] # indirect doctest Subring<accepting no variable>
from sage.symbolic.subring import SymbolicSubring SymbolicSubring(no_variables=True).construction()[0] # indirect doctest
- coercion_reversed = True¶
- merge(other)[source]¶
Merge this functor with
other
if possible.INPUT:
other
– a functor
OUTPUT: a functor or
None
EXAMPLES:
sage: from sage.symbolic.subring import SymbolicSubring sage: F = SymbolicSubring(accepting_variables=('a',)).construction()[0] sage: F.merge(F) is F True
>>> from sage.all import * >>> from sage.symbolic.subring import SymbolicSubring >>> F = SymbolicSubring(accepting_variables=('a',)).construction()[Integer(0)] >>> F.merge(F) is F True
from sage.symbolic.subring import SymbolicSubring F = SymbolicSubring(accepting_variables=('a',)).construction()[0] F.merge(F) is F
- rank = 11¶
- class sage.symbolic.subring.SymbolicConstantsSubring(vars)[source]¶
Bases:
SymbolicSubringAcceptingVars
The symbolic subring consisting of symbolic constants.
- has_valid_variable(variable)[source]¶
Return whether the given
variable
is valid in this subring.INPUT:
variable
– a symbolic variable
OUTPUT: boolean
EXAMPLES:
sage: from sage.symbolic.subring import SymbolicSubring sage: S = SymbolicSubring(no_variables=True) sage: S.has_valid_variable('a') False sage: S.has_valid_variable('r') False sage: S.has_valid_variable('x') False
>>> from sage.all import * >>> from sage.symbolic.subring import SymbolicSubring >>> S = SymbolicSubring(no_variables=True) >>> S.has_valid_variable('a') False >>> S.has_valid_variable('r') False >>> S.has_valid_variable('x') False
from sage.symbolic.subring import SymbolicSubring S = SymbolicSubring(no_variables=True) S.has_valid_variable('a') S.has_valid_variable('r') S.has_valid_variable('x')
- class sage.symbolic.subring.SymbolicSubringAcceptingVars(vars)[source]¶
Bases:
GenericSymbolicSubring
The symbolic subring consisting of symbolic expressions in the given variables.
- construction()[source]¶
Return the functorial construction of this symbolic subring.
OUTPUT:
A tuple whose first entry is a construction functor and its second is the symbolic ring.
EXAMPLES:
sage: from sage.symbolic.subring import SymbolicSubring sage: SymbolicSubring(accepting_variables=('a',)).construction() (Subring<accepting a>, Symbolic Ring)
>>> from sage.all import * >>> from sage.symbolic.subring import SymbolicSubring >>> SymbolicSubring(accepting_variables=('a',)).construction() (Subring<accepting a>, Symbolic Ring)
from sage.symbolic.subring import SymbolicSubring SymbolicSubring(accepting_variables=('a',)).construction()
- has_valid_variable(variable)[source]¶
Return whether the given
variable
is valid in this subring.INPUT:
variable
– a symbolic variable
OUTPUT: boolean
EXAMPLES:
sage: from sage.symbolic.subring import SymbolicSubring sage: S = SymbolicSubring(accepting_variables=('a',)) sage: S.has_valid_variable('a') True sage: S.has_valid_variable('r') False sage: S.has_valid_variable('x') False
>>> from sage.all import * >>> from sage.symbolic.subring import SymbolicSubring >>> S = SymbolicSubring(accepting_variables=('a',)) >>> S.has_valid_variable('a') True >>> S.has_valid_variable('r') False >>> S.has_valid_variable('x') False
from sage.symbolic.subring import SymbolicSubring S = SymbolicSubring(accepting_variables=('a',)) S.has_valid_variable('a') S.has_valid_variable('r') S.has_valid_variable('x')
- class sage.symbolic.subring.SymbolicSubringAcceptingVarsFunctor(vars)[source]¶
Bases:
GenericSymbolicSubringFunctor
- merge(other)[source]¶
Merge this functor with
other
if possible.INPUT:
other
– a functor
OUTPUT: a functor or
None
EXAMPLES:
sage: from sage.symbolic.subring import SymbolicSubring sage: F = SymbolicSubring(accepting_variables=('a',)).construction()[0] sage: G = SymbolicSubring(rejecting_variables=('r',)).construction()[0] sage: F.merge(F) is F True sage: F.merge(G) is G True
>>> from sage.all import * >>> from sage.symbolic.subring import SymbolicSubring >>> F = SymbolicSubring(accepting_variables=('a',)).construction()[Integer(0)] >>> G = SymbolicSubring(rejecting_variables=('r',)).construction()[Integer(0)] >>> F.merge(F) is F True >>> F.merge(G) is G True
from sage.symbolic.subring import SymbolicSubring F = SymbolicSubring(accepting_variables=('a',)).construction()[0] G = SymbolicSubring(rejecting_variables=('r',)).construction()[0] F.merge(F) is F F.merge(G) is G
- class sage.symbolic.subring.SymbolicSubringFactory[source]¶
Bases:
UniqueFactory
A factory creating a symbolic subring.
INPUT:
Specify one of the following keywords to create a subring.
accepting_variables
– (default:None
) a tuple or other iterable of variables. If specified, then a symbolic subring of expressions in only these variables is created.rejecting_variables
– (default:None
) a tuple or other iterable of variables. If specified, then a symbolic subring of expressions in variables distinct to these variables is created.no_variables
– boolean (default:False
); if set, then a symbolic subring of constant expressions (i.e., expressions without a variable) is created.
EXAMPLES:
sage: from sage.symbolic.subring import SymbolicSubring sage: V = var('a, b, c, r, s, t, x, y, z')
>>> from sage.all import * >>> from sage.symbolic.subring import SymbolicSubring >>> V = var('a, b, c, r, s, t, x, y, z')
from sage.symbolic.subring import SymbolicSubring V = var('a, b, c, r, s, t, x, y, z')
sage: A = SymbolicSubring(accepting_variables=(a, b, c)); A Symbolic Subring accepting the variables a, b, c sage: tuple((v, v in A) for v in V) ((a, True), (b, True), (c, True), (r, False), (s, False), (t, False), (x, False), (y, False), (z, False))
>>> from sage.all import * >>> A = SymbolicSubring(accepting_variables=(a, b, c)); A Symbolic Subring accepting the variables a, b, c >>> tuple((v, v in A) for v in V) ((a, True), (b, True), (c, True), (r, False), (s, False), (t, False), (x, False), (y, False), (z, False))
A = SymbolicSubring(accepting_variables=(a, b, c)); A tuple((v, v in A) for v in V)
>>> from sage.all import * >>> A = SymbolicSubring(accepting_variables=(a, b, c)); A Symbolic Subring accepting the variables a, b, c >>> tuple((v, v in A) for v in V) ((a, True), (b, True), (c, True), (r, False), (s, False), (t, False), (x, False), (y, False), (z, False))
A = SymbolicSubring(accepting_variables=(a, b, c)); A tuple((v, v in A) for v in V)
sage: R = SymbolicSubring(rejecting_variables=(r, s, t)); R Symbolic Subring rejecting the variables r, s, t sage: tuple((v, v in R) for v in V) ((a, True), (b, True), (c, True), (r, False), (s, False), (t, False), (x, True), (y, True), (z, True))
>>> from sage.all import * >>> R = SymbolicSubring(rejecting_variables=(r, s, t)); R Symbolic Subring rejecting the variables r, s, t >>> tuple((v, v in R) for v in V) ((a, True), (b, True), (c, True), (r, False), (s, False), (t, False), (x, True), (y, True), (z, True))
R = SymbolicSubring(rejecting_variables=(r, s, t)); R tuple((v, v in R) for v in V)
>>> from sage.all import * >>> R = SymbolicSubring(rejecting_variables=(r, s, t)); R Symbolic Subring rejecting the variables r, s, t >>> tuple((v, v in R) for v in V) ((a, True), (b, True), (c, True), (r, False), (s, False), (t, False), (x, True), (y, True), (z, True))
R = SymbolicSubring(rejecting_variables=(r, s, t)); R tuple((v, v in R) for v in V)
sage: C = SymbolicSubring(no_variables=True); C Symbolic Constants Subring sage: tuple((v, v in C) for v in V) ((a, False), (b, False), (c, False), (r, False), (s, False), (t, False), (x, False), (y, False), (z, False))
>>> from sage.all import * >>> C = SymbolicSubring(no_variables=True); C Symbolic Constants Subring >>> tuple((v, v in C) for v in V) ((a, False), (b, False), (c, False), (r, False), (s, False), (t, False), (x, False), (y, False), (z, False))
C = SymbolicSubring(no_variables=True); C tuple((v, v in C) for v in V)
>>> from sage.all import * >>> C = SymbolicSubring(no_variables=True); C Symbolic Constants Subring >>> tuple((v, v in C) for v in V) ((a, False), (b, False), (c, False), (r, False), (s, False), (t, False), (x, False), (y, False), (z, False))
C = SymbolicSubring(no_variables=True); C tuple((v, v in C) for v in V)
- create_key_and_extra_args(accepting_variables=None, rejecting_variables=None, no_variables=False, **kwds)[source]¶
Given the arguments and keyword, create a key that uniquely determines this object.
See
SymbolicSubringFactory
for details.
- create_object(version, key, **kwds)[source]¶
Create an object from the given arguments.
See
SymbolicSubringFactory
for details.
- class sage.symbolic.subring.SymbolicSubringRejectingVars(vars)[source]¶
Bases:
GenericSymbolicSubring
The symbolic subring consisting of symbolic expressions whose variables are none of the given variables.
- construction()[source]¶
Return the functorial construction of this symbolic subring.
OUTPUT:
A tuple whose first entry is a construction functor and its second is the symbolic ring.
EXAMPLES:
sage: from sage.symbolic.subring import SymbolicSubring sage: SymbolicSubring(rejecting_variables=('r',)).construction() (Subring<rejecting r>, Symbolic Ring)
>>> from sage.all import * >>> from sage.symbolic.subring import SymbolicSubring >>> SymbolicSubring(rejecting_variables=('r',)).construction() (Subring<rejecting r>, Symbolic Ring)
from sage.symbolic.subring import SymbolicSubring SymbolicSubring(rejecting_variables=('r',)).construction()
- has_valid_variable(variable)[source]¶
Return whether the given
variable
is valid in this subring.INPUT:
variable
– a symbolic variable
OUTPUT: boolean
EXAMPLES:
sage: from sage.symbolic.subring import SymbolicSubring sage: S = SymbolicSubring(rejecting_variables=('r',)) sage: S.has_valid_variable('a') True sage: S.has_valid_variable('r') False sage: S.has_valid_variable('x') True
>>> from sage.all import * >>> from sage.symbolic.subring import SymbolicSubring >>> S = SymbolicSubring(rejecting_variables=('r',)) >>> S.has_valid_variable('a') True >>> S.has_valid_variable('r') False >>> S.has_valid_variable('x') True
from sage.symbolic.subring import SymbolicSubring S = SymbolicSubring(rejecting_variables=('r',)) S.has_valid_variable('a') S.has_valid_variable('r') S.has_valid_variable('x')
- class sage.symbolic.subring.SymbolicSubringRejectingVarsFunctor(vars)[source]¶
Bases:
GenericSymbolicSubringFunctor
- merge(other)[source]¶
Merge this functor with
other
if possible.INPUT:
other
– a functor
OUTPUT: a functor or
None
EXAMPLES:
sage: from sage.symbolic.subring import SymbolicSubring sage: F = SymbolicSubring(accepting_variables=('a',)).construction()[0] sage: G = SymbolicSubring(rejecting_variables=('r',)).construction()[0] sage: G.merge(G) is G True sage: G.merge(F) is G True
>>> from sage.all import * >>> from sage.symbolic.subring import SymbolicSubring >>> F = SymbolicSubring(accepting_variables=('a',)).construction()[Integer(0)] >>> G = SymbolicSubring(rejecting_variables=('r',)).construction()[Integer(0)] >>> G.merge(G) is G True >>> G.merge(F) is G True
from sage.symbolic.subring import SymbolicSubring F = SymbolicSubring(accepting_variables=('a',)).construction()[0] G = SymbolicSubring(rejecting_variables=('r',)).construction()[0] G.merge(G) is G G.merge(F) is G