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
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
The subring of symbolic constants (see
SymbolicConstantsSubring). E.g.sage: SR.subring(no_variables=True) Symbolic Constants Subring
sage: sage.categories.pushout.pushout(A, R)
Symbolic Subring rejecting the variable r
sage: sage.categories.pushout.pushout(R, C)
Symbolic Subring rejecting the variable r
sage: sage.categories.pushout.pushout(C, A)
Symbolic Subring accepting the variable a
sage: sage.categories.pushout.pushout(A, SR)
Symbolic Ring
sage: sage.categories.pushout.pushout(R, SR)
Symbolic Ring
sage: sage.categories.pushout.pushout(C, SR)
Symbolic Ring
sage: cm = sage.structure.element.get_coercion_model()
sage: cm.common_parent(A, R)
Symbolic Subring rejecting the variable r
sage: cm.common_parent(R, C)
Symbolic Subring rejecting the variable r
sage: cm.common_parent(C, A)
Symbolic Subring accepting the variable a
sage: cm.common_parent(A, SR)
Symbolic Ring
sage: cm.common_parent(R, SR)
Symbolic Ring
sage: cm.common_parent(C, SR)
Symbolic Ring
AUTHORS:
- Daniel Krenn (2015)
Classes and Methods¶
-
class
sage.symbolic.subring.GenericSymbolicSubring(vars)¶ Bases:
sage.symbolic.ring.SymbolicRingAn abstract base class for a symbolic subring.
INPUT:
vars– a tuple of symbolic variables.
sage: SR.subring(accepting_variables=(0, pi, sqrt(2), 'zzz', I)) Traceback (most recent call last): ... ValueError: Invalid variables: 0, I, pi, sqrt(2)
-
has_valid_variable(variable)¶ Return whether the given
variableis valid in this subring.INPUT:
variable– a symbolic variable.
OUTPUT:
A 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
-
class
sage.symbolic.subring.GenericSymbolicSubringFunctor(vars)¶ Bases:
sage.categories.pushout.ConstructionFunctorA base class for the functors constructing symbolic subrings.
INPUT:
vars– a 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>
-
merge(other)¶ Merge this functor with
otherif 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
-
class
sage.symbolic.subring.SymbolicConstantsSubring(vars)¶ Bases:
sage.symbolic.subring.SymbolicSubringAcceptingVarsThe symbolic subring consisting of symbolic constants.
-
has_valid_variable(variable)¶ Return whether the given
variableis valid in this subring.INPUT:
variable– a symbolic variable.
OUTPUT:
A 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
-
-
class
sage.symbolic.subring.SymbolicSubringAcceptingVars(vars)¶ Bases:
sage.symbolic.subring.GenericSymbolicSubringThe symbolic subring consisting of symbolic expressions in the given variables.
-
construction()¶ 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)
-
has_valid_variable(variable)¶ Return whether the given
variableis valid in this subring.INPUT:
variable– a symbolic variable.
OUTPUT:
A 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
-
-
class
sage.symbolic.subring.SymbolicSubringAcceptingVarsFunctor(vars)¶ Bases:
sage.symbolic.subring.GenericSymbolicSubringFunctor-
merge(other)¶ Merge this functor with
otherif 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
-
-
class
sage.symbolic.subring.SymbolicSubringFactory¶ Bases:
sage.structure.factory.UniqueFactoryA 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(default:False) – a boolean. 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')
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))
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))
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))
sage: SymbolicSubring(rejecting_variables=tuple()) is SR True
-
create_key_and_extra_args(accepting_variables=None, rejecting_variables=None, no_variables=False, **kwds)¶ Given the arguments and keyword, create a key that uniquely determines this object.
See
SymbolicSubringFactoryfor details.
-
create_object(version, key, **kwds)¶ Create an object from the given arguments.
See
SymbolicSubringFactoryfor details.
-
class
sage.symbolic.subring.SymbolicSubringRejectingVars(vars)¶ Bases:
sage.symbolic.subring.GenericSymbolicSubringThe symbolic subring consisting of symbolic expressions whose variables are none of the given variables.
-
construction()¶ 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)
-
has_valid_variable(variable)¶ Return whether the given
variableis valid in this subring.INPUT:
variable– a symbolic variable.
OUTPUT:
A 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
-
-
class
sage.symbolic.subring.SymbolicSubringRejectingVarsFunctor(vars)¶ Bases:
sage.symbolic.subring.GenericSymbolicSubringFunctor-
merge(other)¶ Merge this functor with
otherif 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
-