Skip to content

Commit 4dce1af

Browse files
author
Release Manager
committed
sagemathgh-39405: Resolve error in `transversal_matroid.pyx` An error appears on some ``Python`` implementations because of a bug in ``transversal_extension``. The solution is to ensure that the label of `newset` is not `element`. Reported to me in sagemath#39155 (comment). URL: sagemath#39405 Reported by: gmou3 Reviewer(s): Frédéric Chapoton
2 parents 73f2fcf + ef07593 commit 4dce1af

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/sage/matroids/transversal_matroid.pyx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,7 @@ cdef class TransversalMatroid(BasisExchangeMatroid):
668668
labels.append(l)
669669
return TransversalMatroid(sets, groundset=self.groundset(), set_labels=labels)
670670

671-
cpdef transversal_extension(self, element=None, newset=False, sets=[]):
671+
cpdef transversal_extension(self, element=None, newset=False, sets=None):
672672
r"""
673673
Return a :class:`TransversalMatroid` extended by an element.
674674
@@ -751,6 +751,8 @@ cdef class TransversalMatroid(BasisExchangeMatroid):
751751
Transversal matroid of rank 3 on 5 elements, with 3 sets
752752
sage: Ne = N.transversal_extension(element='f', sets=['s2'])
753753
"""
754+
if sets is None:
755+
sets = []
754756
cdef set parsed_sets = set(sets)
755757
if element is None:
756758
element = newlabel(self._groundset)
@@ -781,17 +783,17 @@ cdef class TransversalMatroid(BasisExchangeMatroid):
781783
else:
782784
new_sets.append(s)
783785

786+
groundset = self._groundset.union([element])
784787
if newset:
785788
if newset is True:
786-
newset = newlabel(self._groundset.union(labels))
789+
newset = newlabel(groundset.union(labels))
787790
new_sets.append([element])
788791
labels = list(labels) # Make a shallow copy since we mutate it
789792
labels.append(newset)
790793

791-
groundset = self._groundset.union([element])
792794
return TransversalMatroid(new_sets, groundset, labels)
793795

794-
def transversal_extensions(self, element=None, sets=[]):
796+
def transversal_extensions(self, element=None, sets=None):
795797
r"""
796798
Return an iterator of extensions based on the transversal presentation.
797799
@@ -829,7 +831,7 @@ cdef class TransversalMatroid(BasisExchangeMatroid):
829831
raise ValueError("cannot extend by element already in groundset")
830832

831833
labels = self._set_labels_input
832-
if not sets:
834+
if sets is None:
833835
sets = labels
834836
elif not set(sets).issubset(labels):
835837
raise ValueError("sets do not match presentation")

0 commit comments

Comments
 (0)