]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
Update SymbolSequence to use underscores.
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 24 Oct 2014 21:23:59 +0000 (17:23 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 24 Oct 2014 21:23:59 +0000 (17:23 -0400)
mjo/symbol_sequence.py

index 757c60d853ab1b36fae3e7b3df6e8bcd7a7512ba..cd9e02dc675f0bea6f05d64ba277fab5aa1d8564 100644 (file)
@@ -8,7 +8,7 @@ class SymbolSequence:
     INPUT:
 
       - ``name`` -- The sequence name. For example, if you name the
     INPUT:
 
       - ``name`` -- The sequence name. For example, if you name the
-        sequence `x`, the variables will be called `x0`, `x1`,...
+        sequence `x`, the variables will be called `x_0`, `x_1`,...
 
       - ``latex_name`` -- An optional latex expression (string) to
         use instead of `name` when converting the symbols to latex.
 
       - ``latex_name`` -- An optional latex expression (string) to
         use instead of `name` when converting the symbols to latex.
@@ -26,9 +26,9 @@ class SymbolSequence:
 
         sage: a = SymbolSequence('a')
         sage: a[0]
 
         sage: a = SymbolSequence('a')
         sage: a[0]
-        a0
+        a_0
         sage: a[1]
         sage: a[1]
-        a1
+        a_1
 
     Create polynomials with symbolic coefficients of arbitrary
     degree::
 
     Create polynomials with symbolic coefficients of arbitrary
     degree::
@@ -36,13 +36,13 @@ class SymbolSequence:
         sage: a = SymbolSequence('a')
         sage: p = sum([ a[i]*x^i for i in range(0,5)])
         sage: p
         sage: a = SymbolSequence('a')
         sage: p = sum([ a[i]*x^i for i in range(0,5)])
         sage: p
-        a4*x^4 + a3*x^3 + a2*x^2 + a1*x + a0
+        a_4*x^4 + a_3*x^3 + a_2*x^2 + a_1*x + a_0
 
     Using a different latex name since 'lambda' is reserved::
 
         sage: l = SymbolSequence('l', '\lambda')
         sage: l[0]
 
     Using a different latex name since 'lambda' is reserved::
 
         sage: l = SymbolSequence('l', '\lambda')
         sage: l[0]
-        l0
+        l_0
         sage: latex(l[0])
         \lambda_{0}
 
         sage: latex(l[0])
         \lambda_{0}
 
@@ -50,34 +50,34 @@ class SymbolSequence:
 
         sage: a = SymbolSequence('a')
         sage: a[0,1,2]
 
         sage: a = SymbolSequence('a')
         sage: a[0,1,2]
-        a012
+        a_0_1_2
         sage: latex(a[0,1,2])
         a_{0}_{1}_{2}
         sage: [ a[i,j] for i in range(0,2) for j in range(0,2) ]
         sage: latex(a[0,1,2])
         a_{0}_{1}_{2}
         sage: [ a[i,j] for i in range(0,2) for j in range(0,2) ]
-        [a00, a01, a10, a11]
+        [a_0_0, a_0_1, a_1_0, a_1_1]
 
     You can pass slices instead of integers to obtain a list of
     symbols::
 
         sage: a = SymbolSequence('a')
         sage: a[5:7]
 
     You can pass slices instead of integers to obtain a list of
     symbols::
 
         sage: a = SymbolSequence('a')
         sage: a[5:7]
-        [a5, a6]
+        [a_5, a_6]
 
     This even works for the second, third, etc. indices::
 
         sage: a = SymbolSequence('a')
         sage: a[0:2, 0:2]
 
     This even works for the second, third, etc. indices::
 
         sage: a = SymbolSequence('a')
         sage: a[0:2, 0:2]
-        [a00, a01, a10, a11]
+        [a_0_0, a_0_1, a_1_0, a_1_1]
 
     TESTS:
 
     We shouldn't overwrite variables in the global namespace::
 
         sage: a = SymbolSequence('a')
 
     TESTS:
 
     We shouldn't overwrite variables in the global namespace::
 
         sage: a = SymbolSequence('a')
-        sage: a0 = 4
+        sage: a_0 = 4
         sage: a[0]
         sage: a[0]
-        a0
-        sage: a0
+        a_0
+        sage: a_0
         4
 
     The symbol at a given index should always be the same, even when
         4
 
     The symbol at a given index should always be the same, even when
@@ -93,9 +93,9 @@ class SymbolSequence:
 
         sage: a = SymbolSequence('a')
         sage: a[3, 0:2]
 
         sage: a = SymbolSequence('a')
         sage: a[3, 0:2]
-        [a30, a31]
+        [a_3_0, a_3_1]
         sage: a[0:2, 3]
         sage: a[0:2, 3]
-        [a03, a13]
+        [a_0_3, a_1_3]
 
     """
 
 
     """
 
@@ -116,12 +116,22 @@ class SymbolSequence:
         Return a symbol with the given subscript. Creates the
         appropriate name and latex_name before delegating to
         SR.symbol().
         Return a symbol with the given subscript. Creates the
         appropriate name and latex_name before delegating to
         SR.symbol().
+
+        EXAMPLES::
+
+            sage: a = SymbolSequence('a', 'alpha', 'real')
+            sage: a_1 = a._create_symbol_(1)
+            sage: a_1
+            a_1
+            sage: latex(a_1)
+            alpha_{1}
+
         """
         # Allow creating unnamed symbols, for consistency with
         # SR.symbol().
         name = None
         if self._name is not None:
         """
         # Allow creating unnamed symbols, for consistency with
         # SR.symbol().
         name = None
         if self._name is not None:
-            name = '%s%d' % (self._name, subscript)
+            name = '%s_%d' % (self._name, subscript)
 
         latex_name = None
         if self._latex_name is not None:
 
         latex_name = None
         if self._latex_name is not None:
@@ -136,6 +146,19 @@ class SymbolSequence:
         to be non-iterable. This is slow, but also works, which is
         more than can be said about some of the snappier solutions of
         lore.
         to be non-iterable. This is slow, but also works, which is
         more than can be said about some of the snappier solutions of
         lore.
+
+        EXAMPLES::
+
+            sage: a = SymbolSequence('a')
+            sage: a._flatten_list_([1,2,3])
+            [1, 2, 3]
+            sage: a._flatten_list_([1,[2,3]])
+            [1, 2, 3]
+            sage: a._flatten_list_([1,[2,[3]]])
+            [1, 2, 3]
+            sage: a._flatten_list_([[[[[1,[2,[3]]]]]]])
+            [1, 2, 3]
+
         """
         result = []
 
         """
         result = []
 
@@ -153,6 +176,27 @@ class SymbolSequence:
         This handles individual integer arguments, slices, and
         tuples. It just hands off the real work to
         self._subscript_foo_().
         This handles individual integer arguments, slices, and
         tuples. It just hands off the real work to
         self._subscript_foo_().
+
+        EXAMPLES:
+
+        An integer argument::
+
+            sage: a = SymbolSequence('a')
+            sage: a.__getitem__(1)
+            a_1
+
+        A tuple argument::
+
+            sage: a = SymbolSequence('a')
+            sage: a.__getitem__((1,2))
+            a_1_2
+
+        A slice argument::
+
+            sage: a = SymbolSequence('a')
+            sage: a.__getitem__(slice(1,4))
+            [a_1, a_2, a_3]
+
         """
         if isinstance(key, tuple):
             return self._subscript_tuple_(key)
         """
         if isinstance(key, tuple):
             return self._subscript_tuple_(key)
@@ -170,6 +214,13 @@ class SymbolSequence:
         """
         The subscript is a single integer, or something that acts like
         one.
         """
         The subscript is a single integer, or something that acts like
         one.
+
+        EXAMPLES::
+
+            sage: a = SymbolSequence('a')
+            sage: a._subscript_integer_(123)
+            a_123
+
         """
         if n < 0:
             # Cowardly refuse to create a variable named "a-1".
         """
         if n < 0:
             # Cowardly refuse to create a variable named "a-1".
@@ -187,6 +238,13 @@ class SymbolSequence:
         We were given a slice. Clean up some of its properties
         first. The start/step are default for lists. We make
         copies of these because they're read-only.
         We were given a slice. Clean up some of its properties
         first. The start/step are default for lists. We make
         copies of these because they're read-only.
+
+        EXAMPLES::
+
+            sage: a = SymbolSequence('a')
+            sage: a._subscript_slice_(slice(1,3))
+            [a_1, a_2]
+
         """
         (start, step) = (s.start, s.step)
         if start is None:
         """
         (start, step) = (s.start, s.step)
         if start is None:
@@ -209,6 +267,20 @@ class SymbolSequence:
         """
         When we have more than one level of subscripts, we pick off
         the first one and generate the rest recursively.
         """
         When we have more than one level of subscripts, we pick off
         the first one and generate the rest recursively.
+
+        EXAMPLES:
+
+        A simple two-tuple::
+
+            sage: a = SymbolSequence('a')
+            sage: a._subscript_tuple_((1,8))
+            a_1_8
+
+        Nested tuples::
+
+            sage: a._subscript_tuple_(( (1,2), (3,(4,5,6)) ))
+            a_1_2_3_4_5_6
+
         """
 
         # We never call this method without an argument.
         """
 
         # We never call this method without an argument.