Indexed Generators¶
- class sage.structure.indexed_generators.IndexedGenerators(indices, prefix='x', **kwds)[source]¶
Bases:
objectAbstract base class for parents whose elements consist of generators indexed by an arbitrary set.
Options controlling the printing of elements:
prefix– string, prefix used for printing elements of this module (default:'x'). With the default, a monomial indexed by ‘a’ would be printed asx['a'].latex_prefix– string orNone, prefix used in the \(\LaTeX\) representation of elements (default:None); if this is anything except the empty string, it prints the index as a subscript. If this isNone, it uses the setting forprefix, so ifprefixis set to “B”, then a monomial indexed by ‘a’ would be printed asB_{a}. If this is the empty string, then don’t print monomials as subscripts: the monomial indexed by ‘a’ would be printed asa, or as[a]iflatex_bracketisTrue.names– dictionary with strings as values or list of strings (optional); a mapping from the indices of the generators to strings giving the generators explicit names. This is used instead of the print optionsprefixandbracketwhennamesis specified.latex_names– dictionary with strings as values or list of strings (optional); same asnamesexcept using the \(\LaTeX\) representationbracket–None, boolean, string, or list or tuple of strings (default:None); ifNone, use the value of the attributeself._repr_option_bracket, which has default valueTrue. (self._repr_option_bracketis available for backwards compatibility. Users should setbracketinstead. Ifbracketis set to anything exceptNone, it overrides the value ofself._repr_option_bracket.) IfFalse, do not include brackets when printing elements: a monomial indexed by ‘a’ would be printed asB'a', and a monomial indexed by (1,2,3) would be printed asB(1,2,3). IfTrue, use “[” and “]” as brackets. If it is one of “[”, “(”, or “{”, use it and its partner as brackets. If it is any other string, use it as both brackets. If it is a list or tuple of strings, use the first entry as the left bracket and the second entry as the right bracket.latex_bracket– boolean, string, or list or tuple of strings (default:False); ifFalse, do not include brackets in the LaTeX representation of elements. This option is only relevant iflatex_prefixis the empty string; otherwise, brackets are not used regardless. IfTrue, use “left[” and “right]” as brackets. If this is one of “[”, “(”, “\{”, “|”, or “||”, use it and its partner, prepended with “left” and “right”, as brackets. If this is any other string, use it as both brackets. If this is a list or tuple of strings, use the first entry as the left bracket and the second entry as the right bracket.scalar_mult– string to use for scalar multiplication in the print representation (default:'*')latex_scalar_mult– string orNone(default:None); string to use for scalar multiplication in the latex representation. IfNone, use the empty string ifscalar_multis set to “*”, otherwise use the value ofscalar_mult.tensor_symbol– string orNone(default:None); string to use for tensor product in the print representation. IfNone, usesage.categories.tensor.symbolandsage.categories.tensor.unicode_symbol.sorting_key– a key function (default:lambda x: x); to use for sorting elements in the output of elementssorting_reverse– boolean (default:False); ifTruesort elements in reverse order in the output of elementsstring_quotes– boolean (default:True); ifTruethen display string indices with quotesiterate_key– boolean (default:False); iterate through the elements of the key and print the result as comma separated objects for string output
Note
These print options may also be accessed and modified using the
print_options()method, after the parent has been defined.EXAMPLES:
We demonstrate a variety of the input options:
sage: from sage.structure.indexed_generators import IndexedGenerators sage: I = IndexedGenerators(ZZ, prefix='A') sage: I._repr_generator(2) 'A[2]' sage: I._latex_generator(2) 'A_{2}' sage: I = IndexedGenerators(ZZ, bracket='(') sage: I._repr_generator(2) 'x(2)' sage: I._latex_generator(2) 'x_{2}' sage: I = IndexedGenerators(ZZ, prefix='', latex_bracket='(') sage: I._repr_generator(2) '[2]' sage: I._latex_generator(2) \left( 2 \right) sage: I = IndexedGenerators(ZZ, bracket=['|', '>']) sage: I._repr_generator(2) 'x|2>'
>>> from sage.all import * >>> from sage.structure.indexed_generators import IndexedGenerators >>> I = IndexedGenerators(ZZ, prefix='A') >>> I._repr_generator(Integer(2)) 'A[2]' >>> I._latex_generator(Integer(2)) 'A_{2}' >>> I = IndexedGenerators(ZZ, bracket='(') >>> I._repr_generator(Integer(2)) 'x(2)' >>> I._latex_generator(Integer(2)) 'x_{2}' >>> I = IndexedGenerators(ZZ, prefix='', latex_bracket='(') >>> I._repr_generator(Integer(2)) '[2]' >>> I._latex_generator(Integer(2)) \left( 2 \right) >>> I = IndexedGenerators(ZZ, bracket=['|', '>']) >>> I._repr_generator(Integer(2)) 'x|2>'
- indices()[source]¶
Return the indices of
self.EXAMPLES:
sage: F = CombinatorialFreeModule(QQ, ['a', 'b', 'c']) # needs sage.modules sage: F.indices() # needs sage.modules {'a', 'b', 'c'}
>>> from sage.all import * >>> F = CombinatorialFreeModule(QQ, ['a', 'b', 'c']) # needs sage.modules >>> F.indices() # needs sage.modules {'a', 'b', 'c'}
- prefix()[source]¶
Return the prefix used when displaying elements of
self.EXAMPLES:
sage: F = CombinatorialFreeModule(QQ, ['a', 'b', 'c']) # needs sage.modules sage: F.prefix() # needs sage.modules 'B'
>>> from sage.all import * >>> F = CombinatorialFreeModule(QQ, ['a', 'b', 'c']) # needs sage.modules >>> F.prefix() # needs sage.modules 'B'
sage: X = SchubertPolynomialRing(QQ) # needs sage.combinat sage.modules sage: X.prefix() # needs sage.combinat sage.modules 'X'
>>> from sage.all import * >>> X = SchubertPolynomialRing(QQ) # needs sage.combinat sage.modules >>> X.prefix() # needs sage.combinat sage.modules 'X'
- print_options(**kwds)[source]¶
Return the current print options, or set an option.
INPUT:
All of the input is optional; if present, it should be in the form of keyword pairs, such as
latex_bracket='('. The allowable keywords are:prefixlatex_prefixnameslatex_namesbracketlatex_bracketscalar_multlatex_scalar_multtensor_symbolstring_quotessorting_keysorting_reverseiterate_key
See the documentation for
IndexedGeneratorsfor descriptions of the effects of setting each of these options.OUTPUT: if the user provides any input, set the appropriate option(s) and return nothing. Otherwise, return the dictionary of settings for print and LaTeX representations.
EXAMPLES:
sage: # needs sage.modules sage: F = CombinatorialFreeModule(ZZ, [1,2,3], prefix='x') sage: F.print_options() {...'prefix': 'x'...} sage: F.print_options(bracket='(') sage: F.print_options() {...'bracket': '('...}
>>> from sage.all import * >>> # needs sage.modules >>> F = CombinatorialFreeModule(ZZ, [Integer(1),Integer(2),Integer(3)], prefix='x') >>> F.print_options() {...'prefix': 'x'...} >>> F.print_options(bracket='(') >>> F.print_options() {...'bracket': '('...}
- sage.structure.indexed_generators.parse_indices_names(names, index_set, prefix, kwds=None)[source]¶
Parse the names, index set, and prefix input, along with setting default values for keyword arguments
kwds.OUTPUT:
The triple
(N, I, p):Nis the tuple of variable names,Iis the index set, andpis the prefix.
This modifies the dictionary
kwds.Note
When the indices, names, or prefix have not been given, it should be passed to this function as
None.Note
For handling default prefixes, if the result will be
Noneif it is not processed in this function.EXAMPLES:
sage: from sage.structure.indexed_generators import parse_indices_names sage: d = {} sage: parse_indices_names('x,y,z', ZZ, None, d) (('x', 'y', 'z'), Integer Ring, None) sage: d {} sage: d = {} sage: parse_indices_names('x,y,z', None, None, d) (('x', 'y', 'z'), {'x', 'y', 'z'}, '') sage: d {'string_quotes': False} sage: d = {} sage: parse_indices_names(None, ZZ, None, d) (None, Integer Ring, None) sage: d {}
>>> from sage.all import * >>> from sage.structure.indexed_generators import parse_indices_names >>> d = {} >>> parse_indices_names('x,y,z', ZZ, None, d) (('x', 'y', 'z'), Integer Ring, None) >>> d {} >>> d = {} >>> parse_indices_names('x,y,z', None, None, d) (('x', 'y', 'z'), {'x', 'y', 'z'}, '') >>> d {'string_quotes': False} >>> d = {} >>> parse_indices_names(None, ZZ, None, d) (None, Integer Ring, None) >>> d {}
sage: d = {'string_quotes':True, 'bracket':'['} sage: parse_indices_names(['a','b','c'], ZZ, 'x', d) (('a', 'b', 'c'), Integer Ring, 'x') sage: d {'bracket': '[', 'string_quotes': True} sage: parse_indices_names('x,y,z', None, 'A', d) (('x', 'y', 'z'), {'x', 'y', 'z'}, 'A') sage: d {'bracket': '[', 'string_quotes': True}
>>> from sage.all import * >>> d = {'string_quotes':True, 'bracket':'['} >>> parse_indices_names(['a','b','c'], ZZ, 'x', d) (('a', 'b', 'c'), Integer Ring, 'x') >>> d {'bracket': '[', 'string_quotes': True} >>> parse_indices_names('x,y,z', None, 'A', d) (('x', 'y', 'z'), {'x', 'y', 'z'}, 'A') >>> d {'bracket': '[', 'string_quotes': True}
- sage.structure.indexed_generators.split_index_keywords(kwds)[source]¶
Split the dictionary
kwdsinto two dictionaries, one containing keywords forIndexedGenerators, and the other is everything else.OUTPUT:
The dictionary containing only they keywords for
IndexedGenerators. This modifies the dictionarykwds.Warning
This modifies the input dictionary
kwds.EXAMPLES:
sage: from sage.structure.indexed_generators import split_index_keywords sage: d = {'string_quotes': False, 'bracket': None, 'base': QQ} sage: split_index_keywords(d) {'bracket': None, 'string_quotes': False} sage: d {'base': Rational Field}
>>> from sage.all import * >>> from sage.structure.indexed_generators import split_index_keywords >>> d = {'string_quotes': False, 'bracket': None, 'base': QQ} >>> split_index_keywords(d) {'bracket': None, 'string_quotes': False} >>> d {'base': Rational Field}
- sage.structure.indexed_generators.standardize_names_index_set(names=None, index_set=None, ngens=None)[source]¶
Standardize the
namesandindex_setinputs.INPUT:
names– (optional) the variable namesindex_set– (optional) the index setngens– (optional) the number of generators
If
ngensis a negative number, then this does not check that the number of variable names matches the size of the index set.OUTPUT:
A pair
(names_std, index_set_std), wherenames_stdis eitherNoneor a tuple of strings, and whereindex_set_stdis a finite enumerated set. The purpose ofindex_set_stdis to index the generators of some object (e.g., the basis of a module); the strings innames_std, when they exist, are used for printing these indices. ThengensIf
namescontains exactly one nameXandngensis greater than 1, thennames_stdareXiforiinrange(ngens).