@@ -762,6 +762,12 @@ def subsequence(self, a, b):
762
762
763
763
sage: S.regenerated().subsequence(1, -4)
764
764
2-regular sequence 0, 0, 0, 0, 1, 3, 6, 9, 12, 18, ...
765
+
766
+ Check that the zero sequence is handeled correctly (issue:`37282`)
767
+ ::
768
+
769
+ sage: Seq2.zero().subsequence(1, 1)
770
+ 2-regular sequence 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
765
771
"""
766
772
from itertools import chain
767
773
from sage .rings .integer_ring import ZZ
@@ -835,14 +841,16 @@ def matrix_row(r, c):
835
841
d , f = rule [r , c ]
836
842
return [self .mu [f ] if d == j else zero_M for j in kernel ]
837
843
844
+ # We explicitly set the ring when creating vectors in order to avoid
845
+ # problems with the zero sequence, see issue:`37282`.
838
846
result = P .element_class (
839
847
P ,
840
848
{r : Matrix .block ([matrix_row (r , c ) for c in kernel ])
841
849
for r in A },
842
- vector (chain .from_iterable (
850
+ vector (P . coefficient_ring (), chain .from_iterable (
843
851
b .get (c , 0 ) * self .left
844
852
for c in kernel )),
845
- vector (chain .from_iterable (
853
+ vector (P . coefficient_ring (), chain .from_iterable (
846
854
(self .coefficient_of_n (c , multiply_left = False ) if c >= 0 else zero_R )
847
855
for c in kernel )))
848
856
0 commit comments