Boundedness of \(k\)-Regular Sequences - Combinatorics

Skip to content
Back to top
View this page
Edit this page

# Boundedness of \(k\)-Regular Sequences

This module contains a collection of algorithms to check for boundedness. This is done - based on eigenvalues and - by the criterion presented in [MS1977a].

## Various

See also

`sage.combinat.regular_sequence`, `recognizable series`, `sage.rings.cfinite_sequence`, `sage.combinat.binary_recurrence_sequences`.

AUTHORS:

- Gabriel Lipnik (2017)

ACKNOWLEDGEMENT:

- Gabriel Lipnik is supported by the Austrian Science Fund (FWF): P 24644-N26.

sage.combinat.regular_sequence_bounded.construct_phi(matrices)

  Return the set \(\phi(S)\) as defined in [MS1977a].

  INPUT:

  - `matrices` – a list of non-negative square matrices in the same dimension

  OUTPUT:

  A list of matrices.

  EXAMPLES:

  Sage

      sage: from sage.combinat.regular_sequence_bounded import construct_phi
      sage: L = [Matrix([[2, 2], [1, 3]]), Matrix([[0, 2], [1, 1]])]
      sage: construct_phi(L)
      [
      [2 2]  [2 2]  [0 2]
      [2 2], [1 2], [1 1]
      ]

  Python

      >>> from sage.all import *
      >>> from sage.combinat.regular_sequence_bounded import construct_phi
      >>> L = [Matrix([[Integer(2), Integer(2)], [Integer(1), Integer(3)]]), Matrix([[Integer(0), Integer(2)], [Integer(1), Integer(1)]])]
      >>> construct_phi(L)
      [
      [2 2]  [2 2]  [0 2]
      [2 2], [1 2], [1 1]
      ]

  Sage

      sage: L = [Matrix([[42, 1, 0], [5, 0, 1], [0, 0, 1]]), Matrix([[0, 1, 1],
      ....: [4, 1, 1], [1, 2, 2]]), Matrix([[5, 1, 1], [1, 7, 1], [0, 1, 32]])]
      sage: construct_phi(L)
      [
      [2 2 1]  [1 2 2]  [2 2 2]  [2 2 2]  [2 2 2]  [2 2 2]  [2 0 2]  [2 2 2]
      [2 2 1]  [2 2 2]  [2 2 2]  [2 2 2]  [2 2 2]  [2 2 2]  [2 2 2]  [2 1 2]
      [0 0 1], [2 2 2], [2 2 2], [0 1 2], [2 0 2], [0 0 1], [2 1 2], [2 1 2],

      [2 1 2]  [2 2 2]  [2 2 2]  [2 2 2]  [2 1 1]  [2 2 2]  [0 1 1]  [2 1 0]
      [2 2 2]  [1 2 2]  [2 2 2]  [2 2 2]  [1 2 1]  [2 1 2]  [2 1 1]  [2 0 1]
      [2 2 2], [1 2 2], [1 2 2], [2 1 2], [0 1 2], [2 0 2], [1 2 2], [0 0 1]
      ]

  [Python]

      >>> from sage.all import *
      >>> L = [Matrix([[Integer(42), Integer(1), Integer(0)], [Integer(5), Integer(0), Integer(1)], [Integer(0), Integer(0), Integer(1)]]), Matrix([[Integer(0), Integer(1), Integer(1)],
      ... [Integer(4), Integer(1), Integer(1)], [Integer(1), Integer(2), Integer(2)]]), Matrix([[Integer(5), Integer(1), Integer(1)], [Integer(1), Integer(7), Integer(1)], [Integer(0), Integer(1), Integer(32)]])]
      >>> construct_phi(L)
      [
      [2 2 1]  [1 2 2]  [2 2 2]  [2 2 2]  [2 2 2]  [2 2 2]  [2 0 2]  [2 2 2]
      [2 2 1]  [2 2 2]  [2 2 2]  [2 2 2]  [2 2 2]  [2 2 2]  [2 2 2]  [2 1 2]
      [0 0 1], [2 2 2], [2 2 2], [0 1 2], [2 0 2], [0 0 1], [2 1 2], [2 1 2],
      <BLANKLINE>
      [2 1 2]  [2 2 2]  [2 2 2]  [2 2 2]  [2 1 1]  [2 2 2]  [0 1 1]  [2 1 0]
      [2 2 2]  [1 2 2]  [2 2 2]  [2 2 2]  [1 2 1]  [2 1 2]  [2 1 1]  [2 0 1]
      [2 2 2], [1 2 2], [1 2 2], [2 1 2], [0 1 2], [2 0 2], [1 2 2], [0 0 1]
      ]

sage.combinat.regular_sequence_bounded.has_bounded_matrix_powers(matrices)

  Return whether \(M^n\) is bounded for \(n \to \infty\) for all \(M\) in `matrices`.

  INPUT:

  - `matrices` – a list of square matrices

  ALGORITHM:

  Eigenvalues are used for the check.

  EXAMPLES:

  Maximum of the absolute value of the eigenvalues \(=1\), algebraic multiplicity equals geometric multiplicity for all eigenvalues with absolute value \(=1\):

  Sage

      sage: from sage.combinat.regular_sequence_bounded import has_bounded_matrix_powers
      sage: matrices = [Matrix([[-1, 1, 1], [-1, 1, 1], [1, -1, 1]]),
      ....:             Matrix([[-1, 1, 1], [-1, 0, 0], [1, 1, 1]])]
      sage: has_bounded_matrix_powers(matrices)
      True

  Python

      >>> from sage.all import *
      >>> from sage.combinat.regular_sequence_bounded import has_bounded_matrix_powers
      >>> matrices = [Matrix([[-Integer(1), Integer(1), Integer(1)], [-Integer(1), Integer(1), Integer(1)], [Integer(1), -Integer(1), Integer(1)]]),
      ...             Matrix([[-Integer(1), Integer(1), Integer(1)], [-Integer(1), Integer(0), Integer(0)], [Integer(1), Integer(1), Integer(1)]])]
      >>> has_bounded_matrix_powers(matrices)
      True

  Maximum of the absolute value of the eigenvalues \(>1\):

  Sage

      sage: matrices = [Matrix([[1, 1], [1/2, -1]])]
      sage: has_bounded_matrix_powers(matrices)
      False

  [Python]

      >>> from sage.all import *
      >>> matrices = [Matrix([[Integer(1), Integer(1)], [Integer(1)/Integer(2), -Integer(1)]])]
      >>> has_bounded_matrix_powers(matrices)
      False

  Maximum of the absolute value of the eigenvalues \(=1\), algebraic and geometric multiplicities different for eigenvalue \(1\):

  Sage

      sage: matrices = [Matrix([[1,1],[0,1]])]
      sage: has_bounded_matrix_powers(matrices)
      False

  Python

      >>> from sage.all import *
      >>> matrices = [Matrix([[Integer(1),Integer(1)],[Integer(0),Integer(1)]])]
      >>> has_bounded_matrix_powers(matrices)
      False

  Maximum of the absolute value of the eigenvalues \(<1\):

  Sage

      sage: matrices = [Matrix([[1, -1], [1/2, -1]])]
      sage: has_bounded_matrix_powers(matrices)
      True

  [Python]

      >>> from sage.all import *
      >>> matrices = [Matrix([[Integer(1), -Integer(1)], [Integer(1)/Integer(2), -Integer(1)]])]
      >>> has_bounded_matrix_powers(matrices)
      True

sage.combinat.regular_sequence_bounded.is_bounded_via_mandel_simon_algorithm(matrices)

  Return whether the semigroup generated whether the semigroup of all possible products of `matrices` is finite/bounded.

  INPUT:

  - `matrices` – a list of non-negative square matrices in the same dimension

  OUTPUT:

  A boolean.

  ALGORITHM:

  A criterion based on [MS1977a] is used here.

  EXAMPLES:

  Sage

      sage: from sage.combinat.regular_sequence_bounded import is_bounded_via_mandel_simon_algorithm
      sage: J = [Matrix([[1, 0, 1], [0, 1, 1], [0, 0, 0]])]
      sage: is_bounded_via_mandel_simon_algorithm(J)
      True

  Python

      >>> from sage.all import *
      >>> from sage.combinat.regular_sequence_bounded import is_bounded_via_mandel_simon_algorithm
      >>> J = [Matrix([[Integer(1), Integer(0), Integer(1)], [Integer(0), Integer(1), Integer(1)], [Integer(0), Integer(0), Integer(0)]])]
      >>> is_bounded_via_mandel_simon_algorithm(J)
      True

  Sage

      sage: from sage.combinat.regular_sequence_bounded import is_bounded_via_mandel_simon_algorithm
      sage: K = [Matrix([[1, 1], [1, 1]])]
      sage: is_bounded_via_mandel_simon_algorithm(K)
      False

  [Python]

      >>> from sage.all import *
      >>> from sage.combinat.regular_sequence_bounded import is_bounded_via_mandel_simon_algorithm
      >>> K = [Matrix([[Integer(1), Integer(1)], [Integer(1), Integer(1)]])]
      >>> is_bounded_via_mandel_simon_algorithm(K)
      False

  Sage

      sage: L = [Matrix([[1, 0], [0, 1]]), Matrix([[1, 0], [0, 0]])]
      sage: is_bounded_via_mandel_simon_algorithm(L)
      True

  Python

      >>> from sage.all import *
      >>> L = [Matrix([[Integer(1), Integer(0)], [Integer(0), Integer(1)]]), Matrix([[Integer(1), Integer(0)], [Integer(0), Integer(0)]])]
      >>> is_bounded_via_mandel_simon_algorithm(L)
      True

  Sage

      sage: M = [Matrix([[1, 0], [0, 2]]), Matrix([[1, 0], [0, 0]])]
      sage: is_bounded_via_mandel_simon_algorithm(M)
      False

  [Python]

      >>> from sage.all import *
      >>> M = [Matrix([[Integer(1), Integer(0)], [Integer(0), Integer(2)]]), Matrix([[Integer(1), Integer(0)], [Integer(0), Integer(0)]])]
      >>> is_bounded_via_mandel_simon_algorithm(M)
      False

  Non-integer-valued input:

  Sage

      sage: N = [Matrix([[0.5, 0], [1, 0]])]
      sage: is_bounded_via_mandel_simon_algorithm(N)
      Traceback (most recent call last):
      ...
      ValueError: Not all matrices are integer-valued.

  Python

      >>> from sage.all import *
      >>> N = [Matrix([[RealNumber('0.5'), Integer(0)], [Integer(1), Integer(0)]])]
      >>> is_bounded_via_mandel_simon_algorithm(N)
      Traceback (most recent call last):
      ...
      ValueError: Not all matrices are integer-valued.

sage.combinat.regular_sequence_bounded.is_integer_valued(matrices)

  Return whether every matrix in `matrices` is integer-valued.

  INPUT:

  - `matrices` – a list of square matrices in the same dimension

  OUTPUT:

  A boolean.

  EXAMPLES:

  Sage

      sage: from sage.combinat.regular_sequence_bounded import is_integer_valued
      sage: matrices = [Matrix([[1, 2], [-1, 0]]), Matrix([[42, -42], [0, 0]])]
      sage: is_integer_valued(matrices)
      True

  Python

      >>> from sage.all import *
      >>> from sage.combinat.regular_sequence_bounded import is_integer_valued
      >>> matrices = [Matrix([[Integer(1), Integer(2)], [-Integer(1), Integer(0)]]), Matrix([[Integer(42), -Integer(42)], [Integer(0), Integer(0)]])]
      >>> is_integer_valued(matrices)
      True

  Sage

      sage: matrices = [Matrix([[1, pi], [-1, 0]])]
      sage: is_integer_valued(matrices)
      False

  [Python]

      >>> from sage.all import *
      >>> matrices = [Matrix([[Integer(1), pi], [-Integer(1), Integer(0)]])]
      >>> is_integer_valued(matrices)
      False

  Sage

      sage: matrices = [Matrix([[1, 1/2], [2/4, 0]])]
      sage: is_integer_valued(matrices)
      False

  Python

      >>> from sage.all import *
      >>> matrices = [Matrix([[Integer(1), Integer(1)/Integer(2)], [Integer(2)/Integer(4), Integer(0)]])]
      >>> is_integer_valued(matrices)
      False

  Sage

      sage: matrices = [Matrix([[1, 4/2], [-1, 0]])]
      sage: is_integer_valued(matrices)
      True

  [Python]

      >>> from sage.all import *
      >>> matrices = [Matrix([[Integer(1), Integer(4)/Integer(2)], [-Integer(1), Integer(0)]])]
      >>> is_integer_valued(matrices)
      True

sage.combinat.regular_sequence_bounded.is_non_negative(matrices)

  Return whether every matrix in `matrices` is non-negative.

  INPUT:

  - `matrices` – a list of square matrices in the same dimension

  OUTPUT:

  A boolean.

  EXAMPLES:

  Sage

      sage: from sage.combinat.regular_sequence_bounded import is_non_negative
      sage: matrices = [Matrix([[1, 2], [1, 0]]), Matrix([[42, -42], [0, 0]])]
      sage: is_non_negative(matrices)
      False

  Python

      >>> from sage.all import *
      >>> from sage.combinat.regular_sequence_bounded import is_non_negative
      >>> matrices = [Matrix([[Integer(1), Integer(2)], [Integer(1), Integer(0)]]), Matrix([[Integer(42), -Integer(42)], [Integer(0), Integer(0)]])]
      >>> is_non_negative(matrices)
      False

  Sage

      sage: matrices = [Matrix([[0]])]
      sage: is_non_negative(matrices)
      True

  [Python]

      >>> from sage.all import *
      >>> matrices = [Matrix([[Integer(0)]])]
      >>> is_non_negative(matrices)
      True

  Sage

      sage: matrices = [Matrix([[1, 1/2], [2/4, 0]])]
      sage: is_non_negative(matrices)
      True

  Python

      >>> from sage.all import *
      >>> matrices = [Matrix([[Integer(1), Integer(1)/Integer(2)], [Integer(2)/Integer(4), Integer(0)]])]
      >>> is_non_negative(matrices)
      True

sage.combinat.regular_sequence_bounded.make_positive(matrices)

  Return a list of non-negative matrices

  INPUT:

  - `matrices` – a list of matrices where every matrix is either non-negative or non-positive.

  OUTPUT:

  A list of matrices containing every non-negative matrix of `matrices`, and \(-M\) if \(M\) is a non-positive matrix of `matrices`.

  EXAMPLES:

  Sage

      sage: from sage.combinat.regular_sequence_bounded import make_positive
      sage: matrices = [Matrix([[1, 2], [1, 0]]), Matrix([[42, 42], [0, 0]])]
      sage: make_positive(matrices)
      [
      [1 2]  [42 42]
      [1 0], [ 0  0]
      ]

  Python

      >>> from sage.all import *
      >>> from sage.combinat.regular_sequence_bounded import make_positive
      >>> matrices = [Matrix([[Integer(1), Integer(2)], [Integer(1), Integer(0)]]), Matrix([[Integer(42), Integer(42)], [Integer(0), Integer(0)]])]
      >>> make_positive(matrices)
      [
      [1 2]  [42 42]
      [1 0], [ 0  0]
      ]

  Sage

      sage: matrices = [Matrix([[1, 2], [1, 0]]), Matrix([[-42, -42], [0, 0]])]
      sage: make_positive(matrices)
      [
      [1 2]  [42 42]
      [1 0], [ 0  0]
      ]

  [Python]

      >>> from sage.all import *
      >>> matrices = [Matrix([[Integer(1), Integer(2)], [Integer(1), Integer(0)]]), Matrix([[-Integer(42), -Integer(42)], [Integer(0), Integer(0)]])]
      >>> make_positive(matrices)
      [
      [1 2]  [42 42]
      [1 0], [ 0  0]
      ]

  Sage

      sage: matrices = [Matrix([[1, 2], [1, 0]]), Matrix([[42, -42], [0, 0]])]
      sage: make_positive(matrices)
      Traceback (most recent call last):
      ...
      ValueError: There is a matrix which is neither non-negative nor non-positive.

  Python

      >>> from sage.all import *
      >>> matrices = [Matrix([[Integer(1), Integer(2)], [Integer(1), Integer(0)]]), Matrix([[Integer(42), -Integer(42)], [Integer(0), Integer(0)]])]
      >>> make_positive(matrices)
      Traceback (most recent call last):
      ...
      ValueError: There is a matrix which is neither non-negative nor non-positive.

sage.combinat.regular_sequence_bounded.multiply_reduce(A, B)

  Return the matrix \(A\cdot B\) with entries \(\min{(A\cdot B)_{ij},2}\).

  INPUT:

  - `A` – an \(m \times n\) matrix

  - `B` – an \(n \times p\) matrix

  OUTPUT:

  An \(m \times p\) matrix with entries \(\min{(A\cdot B)_{ij},2}\).

  EXAMPLES:

  Sage

      sage: from sage.combinat.regular_sequence_bounded import multiply_reduce
      sage: A = Matrix([[2, 0], [0, 2]])
      sage: B = Matrix([[-2, 0], [0, 2]])
      sage: A*B
      [-4  0]
      [ 0  4]
      sage: multiply_reduce(A, B)
      [-4  0]
      [ 0  2]

  Python

      >>> from sage.all import *
      >>> from sage.combinat.regular_sequence_bounded import multiply_reduce
      >>> A = Matrix([[Integer(2), Integer(0)], [Integer(0), Integer(2)]])
      >>> B = Matrix([[-Integer(2), Integer(0)], [Integer(0), Integer(2)]])
      >>> A*B
      [-4  0]
      [ 0  4]
      >>> multiply_reduce(A, B)
      [-4  0]
      [ 0  2]

  Sage

      sage: A = Matrix([[1, 2, 3], [-1, -2, -3], [1, 2, 3]])
      sage: B = Matrix([[1, 2, 3], [2, 3, 4], [1, 2, 3]])
      sage: A*B
      [  8  14  20]
      [ -8 -14 -20]
      [  8  14  20]
      sage: multiply_reduce(A, B)
      [  2   2   2]
      [ -8 -14 -20]
      [  2   2   2]

  [Python]

      >>> from sage.all import *
      >>> A = Matrix([[Integer(1), Integer(2), Integer(3)], [-Integer(1), -Integer(2), -Integer(3)], [Integer(1), Integer(2), Integer(3)]])
      >>> B = Matrix([[Integer(1), Integer(2), Integer(3)], [Integer(2), Integer(3), Integer(4)], [Integer(1), Integer(2), Integer(3)]])
      >>> A*B
      [  8  14  20]
      [ -8 -14 -20]
      [  8  14  20]
      >>> multiply_reduce(A, B)
      [  2   2   2]
      [ -8 -14 -20]
      [  2   2   2]

sage.combinat.regular_sequence_bounded.regular_sequence_is_bounded(S)

  Return whether this \(k\)-regular sequence is bounded.

  INPUT:

  - `S` – a \(k\)-regular sequence

  OUTPUT:

  A boolean.

  EXAMPLES:

  Thue–Morse Sequence:

  Sage

      sage: from sage.combinat.regular_sequence_bounded import regular_sequence_is_bounded
      sage: Seq2 = RegularSequenceRing(2, ZZ)
      sage: TM = Seq2([Matrix([[1, 0], [0, 1]]), Matrix([[0, 1], [1, 0]])],
      ....:            left=vector([1, 0]), right=vector([0, 1]))
      sage: regular_sequence_is_bounded(TM)
      True

  Python

      >>> from sage.all import *
      >>> from sage.combinat.regular_sequence_bounded import regular_sequence_is_bounded
      >>> Seq2 = RegularSequenceRing(Integer(2), ZZ)
      >>> TM = Seq2([Matrix([[Integer(1), Integer(0)], [Integer(0), Integer(1)]]), Matrix([[Integer(0), Integer(1)], [Integer(1), Integer(0)]])],
      ...            left=vector([Integer(1), Integer(0)]), right=vector([Integer(0), Integer(1)]))
      >>> regular_sequence_is_bounded(TM)
      True

  Binary Sum of Digits:

  Sage

      sage: SD = Seq2([Matrix([[1, 0], [0, 1]]), Matrix([[0, -1], [1, 2]])],
      ....:           left=vector([0, 1]), right=vector([1, 0]))
      sage: regular_sequence_is_bounded(SD)
      False

  [Python]

      >>> from sage.all import *
      >>> SD = Seq2([Matrix([[Integer(1), Integer(0)], [Integer(0), Integer(1)]]), Matrix([[Integer(0), -Integer(1)], [Integer(1), Integer(2)]])],
      ...           left=vector([Integer(0), Integer(1)]), right=vector([Integer(1), Integer(0)]))
      >>> regular_sequence_is_bounded(SD)
      False

  Sequence of All Natural Numbers:

  Sage

      sage: N = Seq2([Matrix([[2, 0], [2, 1]]), Matrix([[0, 1], [-2, 3]])],
      ....:          left=vector([1, 0]), right=vector([0, 1]))
      sage: regular_sequence_is_bounded(N)
      False

  Python

      >>> from sage.all import *
      >>> N = Seq2([Matrix([[Integer(2), Integer(0)], [Integer(2), Integer(1)]]), Matrix([[Integer(0), Integer(1)], [-Integer(2), Integer(3)]])],
      ...          left=vector([Integer(1), Integer(0)]), right=vector([Integer(0), Integer(1)]))
      >>> regular_sequence_is_bounded(N)
      False

  Indicator Function of Even Integers:

  Sage

      sage: E = Seq2([Matrix([[0, 1], [0, 1]]), Matrix([[0, 0], [0, 1]])],
      ....:          left=vector([1, 0]), right=vector([1, 1]))
      sage: regular_sequence_is_bounded(E)
      True

  [Python]

      >>> from sage.all import *
      >>> E = Seq2([Matrix([[Integer(0), Integer(1)], [Integer(0), Integer(1)]]), Matrix([[Integer(0), Integer(0)], [Integer(0), Integer(1)]])],
      ...          left=vector([Integer(1), Integer(0)]), right=vector([Integer(1), Integer(1)]))
      >>> regular_sequence_is_bounded(E)
      True

  Indicator Function of Odd Integers:

  Sage

      sage: O = Seq2([Matrix([[0, 0], [0, 1]]), Matrix([[0, 1], [0, 1]])],
      ....:          left=vector([1, 0]), right=vector([0, 1]))
      sage: regular_sequence_is_bounded(O)
      True

  Python

      >>> from sage.all import *
      >>> O = Seq2([Matrix([[Integer(0), Integer(0)], [Integer(0), Integer(1)]]), Matrix([[Integer(0), Integer(1)], [Integer(0), Integer(1)]])],
      ...          left=vector([Integer(1), Integer(0)]), right=vector([Integer(0), Integer(1)]))
      >>> regular_sequence_is_bounded(O)
      True

  Number of Odd Entries in Pascal’s Triangle:

  Sage

      sage: U = Seq2([Matrix([[3, 0], [6, 1]]), Matrix([[0, 1], [-6, 5]])],
      ....:          left=vector([1, 0]), right=vector([0, 1]))
      sage: regular_sequence_is_bounded(U)
      False

  [Python]

      >>> from sage.all import *
      >>> U = Seq2([Matrix([[Integer(3), Integer(0)], [Integer(6), Integer(1)]]), Matrix([[Integer(0), Integer(1)], [-Integer(6), Integer(5)]])],
      ...          left=vector([Integer(1), Integer(0)]), right=vector([Integer(0), Integer(1)]))
      >>> regular_sequence_is_bounded(U)
      False

  Counting ‘10’ in the Binary Representation:

  Sage

      sage: C = Seq2([Matrix([[0, 1, 0, 0], [0, 0, 0, 1],
      ....:                   [-1, 0, 1, 1], [0, 0, 0, 1]]),
      ....:           Matrix([[0, 0, 1, 0], [0, 1, 0, 0],
      ....:                   [0, 0, 1, 0], [-1, 0, 1, 1]])],
      ....:                  left=vector([1, 0, 0, 0]),
      ....:                  right=vector([0, 0, 1, 0]))
      sage: regular_sequence_is_bounded(C)
      False

  Python

      >>> from sage.all import *
      >>> C = Seq2([Matrix([[Integer(0), Integer(1), Integer(0), Integer(0)], [Integer(0), Integer(0), Integer(0), Integer(1)],
      ...                   [-Integer(1), Integer(0), Integer(1), Integer(1)], [Integer(0), Integer(0), Integer(0), Integer(1)]]),
      ...           Matrix([[Integer(0), Integer(0), Integer(1), Integer(0)], [Integer(0), Integer(1), Integer(0), Integer(0)],
      ...                   [Integer(0), Integer(0), Integer(1), Integer(0)], [-Integer(1), Integer(0), Integer(1), Integer(1)]])],
      ...                  left=vector([Integer(1), Integer(0), Integer(0), Integer(0)]),
      ...                  right=vector([Integer(0), Integer(0), Integer(1), Integer(0)]))
      >>> regular_sequence_is_bounded(C)
      False

  Numbers Starting with ‘10’:

  Sage

      sage: D = Seq2([Matrix([[0, 1, 0, 0], [0, 0, 1, 0],
      ....:                   [0, -2, 3, 0], [0, -2, 2, 1]]),
      ....:           Matrix([[2, 0, 0, 0], [0, 0, 0, 1],
      ....:                   [0, 2, 0, 1], [0, -2, 0, 3]])],
      ....:                  left=vector([1, 0, 0, 0]),
      ....:                  right=vector([2, 2, 2, 5]))
      sage: regular_sequence_is_bounded(D)
      False

  [Python]

      >>> from sage.all import *
      >>> D = Seq2([Matrix([[Integer(0), Integer(1), Integer(0), Integer(0)], [Integer(0), Integer(0), Integer(1), Integer(0)],
      ...                   [Integer(0), -Integer(2), Integer(3), Integer(0)], [Integer(0), -Integer(2), Integer(2), Integer(1)]]),
      ...           Matrix([[Integer(2), Integer(0), Integer(0), Integer(0)], [Integer(0), Integer(0), Integer(0), Integer(1)],
      ...                   [Integer(0), Integer(2), Integer(0), Integer(1)], [Integer(0), -Integer(2), Integer(0), Integer(3)]])],
      ...                  left=vector([Integer(1), Integer(0), Integer(0), Integer(0)]),
      ...                  right=vector([Integer(2), Integer(2), Integer(2), Integer(5)]))
      >>> regular_sequence_is_bounded(D)
      False

  Signum Function:

  Sage

      sage: S = Seq2([Matrix([[1, 0], [0, 1]]), Matrix([[0, 1], [0, 1]])],
      ....:          left=vector([1, 0]), right=vector([0, 1]))
      sage: regular_sequence_is_bounded(S)
      True

  Python

      >>> from sage.all import *
      >>> S = Seq2([Matrix([[Integer(1), Integer(0)], [Integer(0), Integer(1)]]), Matrix([[Integer(0), Integer(1)], [Integer(0), Integer(1)]])],
      ...          left=vector([Integer(1), Integer(0)]), right=vector([Integer(0), Integer(1)]))
      >>> regular_sequence_is_bounded(S)
      True

  Number of Digits from the Right to the First ‘1’:

  Sage

      sage: S = Seq2([Matrix([[0, 1, 0], [-1, 2, 0], [0, 0, 1]]),
      ....:           Matrix([[0, 0, 1], [0, 0, 2], [0, 0, 1]])],
      ....:          left=vector([1, 0, 0]), right=vector([0, 0, 1]))
      sage: regular_sequence_is_bounded(S)
      False

  [Python]

      >>> from sage.all import *
      >>> S = Seq2([Matrix([[Integer(0), Integer(1), Integer(0)], [-Integer(1), Integer(2), Integer(0)], [Integer(0), Integer(0), Integer(1)]]),
      ...           Matrix([[Integer(0), Integer(0), Integer(1)], [Integer(0), Integer(0), Integer(2)], [Integer(0), Integer(0), Integer(1)]])],
      ...          left=vector([Integer(1), Integer(0), Integer(0)]), right=vector([Integer(0), Integer(0), Integer(1)]))
      >>> regular_sequence_is_bounded(S)
      False