@@ -76,14 +76,14 @@ cdef class FlatsMatroid(Matroid):
76
76
self ._F[i].add(frozenset (F))
77
77
else :
78
78
self ._groundset = frozenset (groundset)
79
- for i in flats:
79
+ for i in sorted ( flats) :
80
80
for F in flats[i]:
81
81
try :
82
82
self ._F[i].add(frozenset (F))
83
83
except KeyError :
84
84
self ._F[i] = set ()
85
85
self ._F[i].add(frozenset (F))
86
- self ._matroid_rank = self .rank( self ._groundset )
86
+ self ._matroid_rank = max ([ 0 ] + list ( self ._F) )
87
87
88
88
cpdef groundset(self ) noexcept:
89
89
"""
@@ -121,16 +121,20 @@ cdef class FlatsMatroid(Matroid):
121
121
sage: M = FlatsMatroid(matroids.Theta(3))
122
122
sage: M._rank(['x1', 'y0', 'y2'])
123
123
2
124
+
125
+ TESTS::
126
+
127
+ sage: from sage.matroids.flats_matroid import FlatsMatroid
128
+ sage: M = matroids.catalog.NonDesargues()
129
+ sage: F = FlatsMatroid(M)
130
+ sage: for S in powerset(M.groundset()):
131
+ ....: assert M.rank(S) == F.rank(S)
124
132
"""
125
133
cdef frozenset XX = frozenset (X)
126
- cdef int min = len (self ._groundset)
127
- for i in self ._F:
128
- if i < min :
134
+ for i in range (self .rank() + 1 ):
129
135
for f in self ._F[i]:
130
136
if f >= XX:
131
- min = i
132
- break
133
- return min
137
+ return i
134
138
135
139
# optional
136
140
@@ -409,7 +413,7 @@ cdef class FlatsMatroid(Matroid):
409
413
"""
410
414
cdef list W = []
411
415
cdef int i
412
- for i in sorted ( self ._F) :
416
+ for i in self ._F:
413
417
W.append(len (self ._F[i]))
414
418
return W
415
419
@@ -476,7 +480,7 @@ cdef class FlatsMatroid(Matroid):
476
480
cdef bint flag
477
481
478
482
# check flats dictionary for invalid ranks and repeated flats
479
- ranks = sorted (self ._F)
483
+ ranks = list (self ._F)
480
484
if ranks != list (range (len (ranks))):
481
485
return False
482
486
flats_lst = [F for i in self ._F for F in self ._F[i]]
0 commit comments