Skip to content

Commit f4bcb46

Browse files
committed
k-regular sequences: refactor .regenerated (use minimize_result decorator)
1 parent 5ff2ae4 commit f4bcb46

File tree

1 file changed

+35
-14
lines changed

1 file changed

+35
-14
lines changed

src/sage/combinat/k_regular_sequence.py

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -397,15 +397,17 @@ def _error_if_degenerated_(self):
397397
"for correcting this.")
398398

399399
@cached_method
400-
def regenerated(self, minimize=True):
400+
def regenerated(self, **kwds):
401401
r"""
402402
Return a `k`-regular sequence that satisfies
403403
`\mu[0] \mathit{right} = \mathit{right}`.
404404
405405
INPUT:
406406
407-
- ``minimize`` -- (default: ``True``) a boolean. If set, then
408-
:meth:`minimized` is called after the operation.
407+
- ``minimize`` -- (default: ``None``) a boolean or ``None``.
408+
If ``True``, then :meth:`~RecognizableSeries.minimized` is called after the operation,
409+
if ``False``, then not. If this argument is ``None``, then
410+
the default specified by the parent's ``minimize_results`` is used.
409411
410412
OUTPUT:
411413
@@ -451,19 +453,43 @@ def regenerated(self, minimize=True):
451453
)
452454
sage: H.is_degenerated()
453455
False
456+
"""
457+
if not self.is_degenerated():
458+
return self
459+
return self._regenerated_(**kwds)
454460

455-
::
461+
@minimize_result
462+
def _regenerated_(self):
463+
r"""
464+
Return a `k`-regular sequence that satisfies
465+
`\mu[0] \mathit{right} = \mathit{right}`.
466+
467+
Compared to :meth:`regenerated`, this method skips some initial checks
468+
whether the sequence is degenerated or not.
469+
470+
See also :meth:`regenerated`.
471+
472+
INPUT:
473+
474+
- ``minimize`` -- (default: ``None``) a boolean or ``None``.
475+
If ``True``, then :meth:`~RecognizableSeries.minimized` is called after the operation,
476+
if ``False``, then not. If this argument is ``None``, then
477+
the default specified by the parent's ``minimize_results`` is used.
456478
479+
OUTPUT:
480+
481+
A :class:`kRegularSequence`
482+
483+
TESTS::
484+
485+
sage: Seq2 = kRegularSequenceSpace(2, ZZ)
457486
sage: C = Seq2((Matrix([[2, 0], [2, 1]]), Matrix([[0, 1], [-2, 3]])),
458487
....: vector([1, 0]), vector([0, 1]))
459488
sage: C.is_degenerated()
460489
False
461-
sage: C.regenerated() is C
490+
sage: C.regenerated() is C # indirect doctest
462491
True
463492
"""
464-
if not self.is_degenerated():
465-
return self
466-
467493
from sage.matrix.special import zero_matrix, identity_matrix
468494
from sage.modules.free_module_element import vector
469495

@@ -478,16 +504,11 @@ def regenerated(self, minimize=True):
478504
mu.update((r, Z.augment(Z).stack(self.mu[r].augment(self.mu[r])))
479505
for r in itA)
480506

481-
result = P.element_class(
507+
return P.element_class(
482508
P, mu,
483509
vector(2*tuple(self.left)),
484510
vector(tuple(self.right) + dim*(0,)))
485511

486-
if minimize:
487-
return result.minimized()
488-
else:
489-
return result
490-
491512
def transposed(self, allow_degenerated_sequence=False):
492513
r"""
493514
Return the transposed sequence.

0 commit comments

Comments
 (0)