Opened 2 years ago
Closed 2 years ago
#30528 closed enhancement (invalid)
Remove basic access to bitsets in combinatorial polyhedron
Reported by:  ghkliem  Owned by:  

Priority:  major  Milestone:  sageduplicate/invalid/wontfix 
Component:  geometry  Keywords:  
Cc:  Travis Scrimshaw, Matthias Köppe  Merged in:  
Authors:  Reviewers:  Travis Scrimshaw  
Report Upstream:  N/A  Work issues:  
Branch:  Commit:  
Dependencies:  Stopgaps: 
Description
This ticket removes basic access to bitsets in files related to combinatorial polyhedron and moves this to a new file combinatorial_polyhedron/bitsets.cc
, which is more or less a copy of parts of data_structures/bitsets.pxi
.
Also bit_vector_operations.cc
is renamed to bitset_operations.cc
.
bitsets.cc
should be a C++ file, because bitset_operations.cc
will use it (and the later one needs to be C++ or C, because it needs to be able to handle macros as indicated in #27103).
Follow ups:
 Even less access to the underlying structure of faces or lists of faces by introducing structures that collect them. This will simplify the signature of
get_next_level
. Currently this is(uin64_t**, size_t, uint64_t**, uint64_t**, size_t, size_t)
and much worse for the simple/simplicial case (#30040). Eventually this should be similar to(face_list_struct, face_list_struct, face_list_struct)
for both cases and then the underlying function can worry aboutface_list_struct
. This is also more solid with regard to future changes.  Eventually merging both versions of
bitsets
and only having small parts in an extra C++ file that can be optimized by intrinsics.
Change History (19)
comment:1 Changed 2 years ago by
Cc:  Travis Scrimshaw added 

Status:  new → needs_review 
comment:2 Changed 2 years ago by
Reviewers:  → Travis Scrimshaw 

Status:  needs_review → positive_review 
comment:3 followup: 7 Changed 2 years ago by
Thank you.
std::bitset
isn't architecture optimized as far as I can see.
There is also Roaring Bitmap and probably much more out there. Of course it must be portable to be shipped with sage.
The idea of this ticket (and a follow up) is to get to the point, where it makes sense to try different things. Currently, whenever I try something different, there is so many places that need to be adjusted. This is annoying. So the idea is that FaceIterator
etc. do not know how that thing works. They just use it for top level functions to e.g. intersect two faces. Some down level function can worry about how to do this.
For a good face iterator I need the following:
 Constant memory usage (I'm reusing the same things over and over, I cannot afford to allocate memory each time), as far as I can see Roaring Bitmap does not provide this.
 Use of available intrinsics. Why waste a factor of two? (For the
f_vector
this was a factor of two for the total time, not just for part of the job.)  Some way to deal with very sparse sets. Further down the polyhedron there will be many faces containing just a tiny portion of the vertices. This can be exploited.
comment:4 Changed 2 years ago by
Commit:  5052b06d9aaf952d127bbc9cff0abacdfda777d0 → 0b41c77a91f6686e3a6e9a99eb78053d93a2e904 

Status:  positive_review → needs_review 
Branch pushed to git repo; I updated commit sha1 and set ticket back to needs_review. This was a forced push. Last 10 new commits:
f997cec  small fixes

63b7bd6  improvements in documentation

f2edc3d  get rid of maybe_newfaces

6dfbe81  get rid of compute_dimension_loop

f2dd072  do not expose the coatoms

fc8124a  fix mistake

7b134d5  Merge branch 'u/ghkliem/simplify_conversion_tests' of git://trac.sagemath.org/sage into u/ghkliem/no_more_basic_access_2

072e200  temporary commit

cba37e8  temporary commit

0b41c77  remove basic acces to bitsets

comment:7 Changed 2 years ago by
Replying to ghkliem:
Thank you.
std::bitset
isn't architecture optimized as far as I can see. There is also Roaring Bitmap and probably much more out there. Of course it must be portable to be shipped with sage.The idea of this ticket (and a follow up) is to get to the point, where it makes sense to try different things. Currently, whenever I try something different, there is so many places that need to be adjusted. This is annoying. So the idea is that
FaceIterator
etc. do not know how that thing works. They just use it for top level functions to e.g. intersect two faces. Some down level function can worry about how to do this.For a good face iterator I need the following:
 Constant memory usage (I'm reusing the same things over and over, I cannot afford to allocate memory each time), as far as I can see Roaring Bitmap does not provide this.
 Use of available intrinsics. Why waste a factor of two? (For the
f_vector
this was a factor of two for the total time, not just for part of the job.) Some way to deal with very sparse sets. Further down the polyhedron there will be many faces containing just a tiny portion of the vertices. This can be exploited.
A quick update to the explanation:
I tested roaring and it performs wonderful, but only with bitsets starting with about 50,000 bits, as it stores in chunks and the chunks are set to 2^{16 bits each. So this is not an option for small stuff, but very interesting if you go into very large things. }
comment:8 Changed 2 years ago by
Status:  positive_review → needs_work 

Doesn't compile on osx
[sagelib9.3.beta1] [18/20] gcc Wnounusedresult Wsigncompare Wunreachablecode DNDEBUG g fwrapv O3 Wall Wnounused Isage/geometry/polyhedron/combinatorial_polyhedron I./sage/libs/flint I./sage/cpython I./sage/ext I/Users/buildbotsage/slave/sage_git/build/local/lib/python3.8/sitepackages/cysignals I/Users/buildbotsage/slave/sage_git/build/build/pkgs/sagelib/src I/Users/buildbotsage/slave/sage_git/build/local/include/python3.8 I/Users/buildbotsage/slave/sage_git/build/local/lib/python3.8/sitepackages/numpy/core/include Ibuild/cythonized I/Users/buildbotsage/slave/sage_git/build/local/include/python3.8 c build/cythonized/sage/geometry/polyhedron/combinatorial_polyhedron/list_of_faces.cpp o build/temp.macosx10.9x86_643.8/build/cythonized/sage/geometry/polyhedron/combinatorial_polyhedron/list_of_faces.o fnostrictaliasing DCYTHON_CLINE_IN_TRACEBACK=1 std=c++11 [sagelib9.3.beta1] In file included from build/cythonized/sage/geometry/polyhedron/combinatorial_polyhedron/list_of_faces.cpp:2902: [sagelib9.3.beta1] build/cythonized/sage/geometry/polyhedron/combinatorial_polyhedron/bitsets.cc:143:12: error: no matching function for call to '__gmpn_scan1' [sagelib9.3.beta1] return mpn_scan1(&limb, 0); [sagelib9.3.beta1] ^~~~~~~~~ [sagelib9.3.beta1] /Users/buildbotsage/slave/sage_git/build/local/include/gmp.h:1828:19: note: expanded from macro 'mpn_scan1' [sagelib9.3.beta1] #define mpn_scan1 __MPN(scan1) [sagelib9.3.beta1] ^~~~~~~~~~~~ [sagelib9.3.beta1] /Users/buildbotsage/slave/sage_git/build/local/include/gmp.h:335:18: note: expanded from macro '__MPN' [sagelib9.3.beta1] #define __MPN(x) __gmpn_##x [sagelib9.3.beta1] ^~~~~~~~~~ [sagelib9.3.beta1] <scratch space>:6:1: note: expanded from here [sagelib9.3.beta1] __gmpn_scan1 [sagelib9.3.beta1] ^~~~~~~~~~~~ [sagelib9.3.beta1] /Users/buildbotsage/slave/sage_git/build/local/include/gmp.h:1829:28: note: candidate function not viable: no known conversion from 'uint64_t *' (aka 'unsigned long long *') to 'mp_srcptr' (aka 'const unsigned long *') for 1st argument [sagelib9.3.beta1] __GMP_DECLSPEC mp_bitcnt_t mpn_scan1 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE; [sagelib9.3.beta1] ^ [sagelib9.3.beta1] /Users/buildbotsage/slave/sage_git/build/local/include/gmp.h:1828:19: note: expanded from macro 'mpn_scan1' [sagelib9.3.beta1] #define mpn_scan1 __MPN(scan1) [sagelib9.3.beta1] ^ [sagelib9.3.beta1] /Users/buildbotsage/slave/sage_git/build/local/include/gmp.h:335:18: note: expanded from macro '__MPN' [sagelib9.3.beta1] #define __MPN(x) __gmpn_##x [sagelib9.3.beta1] ^ [sagelib9.3.beta1] <scratch space>:125:1: note: expanded from here
comment:9 Changed 2 years ago by
Commit:  0b41c77a91f6686e3a6e9a99eb78053d93a2e904 → 6fa7ac9335dcc1baf8fa086c0b82a3b1e70bde67 

comment:10 Changed 2 years ago by
Status:  needs_work → needs_review 

Ok, falling back to a manual mpn_scan1
for now.
It really doesn't matter that much, because it is not less efficient then the current one and it will hopefully be removed in follow up.
This ticket is mostly about moving some function out of the "frontend", to account for the fact that CombinatorialPolyhedron
does not need to know how we want to store incidences. We could use any representation and the algorithm would still work. So the CombinatorialPolyhedron
and FaceIterator
should not relie on implementation details of the data structure and instead use access functions.
comment:11 followup: 12 Changed 2 years ago by
Cc:  Matthias Köppe added 

@mkoeppe: Could you maybe check if this works on OSX? So if it compiles now and if tests in geometry/polyhedron
pass?
comment:12 Changed 2 years ago by
Replying to ghkliem:
@mkoeppe: Could you maybe check if this works on OSX? So if it compiles now and if tests in
geometry/polyhedron
pass?
Yes, please as I don't have access to an OSX machine. @ghkliem we can also hope the appropriate patchbot to come around too.
comment:13 Changed 2 years ago by
https://github.com/kliem/sage/actions/runs/374613473
Evtl. this will also terminate.
comment:14 Changed 2 years ago by
Status:  needs_review → positive_review 

Ok. Seems to work now. The OSX patchbot came back and it is morally green (unrelated tests fail).
comment:15 Changed 2 years ago by
Fails on 32bit:
File "src/sage/combinat/root_system/associahedron.py", line 121, in sage.combinat.root_system.associahedron.Associahedron Failed example: TestSuite(p2).run() Expected nothing Got: Failure in _test_pyramid: Traceback (most recent call last): File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/misc/sage_unittest.py", line 297, in run test_method(tester=tester) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 7432, in _test_pyramid check_pyramid_certificate(pyr, cert) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 7421, in check_pyramid_certificate tester.assertTrue(any(set(f.ambient_Vrepresentation()) == others for f in P.facets())) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/unittest/case.py", line 765, in assertTrue raise self.failureException(msg) AssertionError: False is not true  The following tests failed: _test_pyramid ********************************************************************** File "src/sage/combinat/root_system/associahedron.py", line 123, in sage.combinat.root_system.associahedron.Associahedron Failed example: TestSuite(p3).run() Expected nothing Got: Failure in _test_an_affine_basis: Traceback (most recent call last): File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/misc/sage_unittest.py", line 297, in run test_method(tester=tester) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 2290, in _test_an_affine_basis b = self.an_affine_basis() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 2263, in an_affine_basis basis_indices.append(face[0]) IndexError: tuple index out of range  Failure in _test_linear_transformation: Traceback (most recent call last): File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/misc/sage_unittest.py", line 297, in run test_method(tester=tester) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 5353, in _test_linear_transformation tester.assertEqual(self, self.linear_transformation(identity_matrix(self.ambient_dim()))) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 5286, in linear_transformation homogeneous_basis = matrix(R, ( [1] + list(v) for v in self.an_affine_basis() )).transpose() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 2263, in an_affine_basis basis_indices.append(face[0]) IndexError: tuple index out of range  Failure in _test_pyramid: Traceback (most recent call last): File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/misc/sage_unittest.py", line 297, in run test_method(tester=tester) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 7432, in _test_pyramid check_pyramid_certificate(pyr, cert) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 7421, in check_pyramid_certificate tester.assertTrue(any(set(f.ambient_Vrepresentation()) == others for f in P.facets())) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/unittest/case.py", line 765, in assertTrue raise self.failureException(msg) AssertionError: False is not true  The following tests failed: _test_an_affine_basis, _test_linear_transformation, _test_pyramid ********************************************************************** 1 item had failures: 2 of 17 in sage.combinat.root_system.associahedron.Associahedron [69 tests, 2 failures, 8.05 s] ********************************************************************** File "src/sage/combinat/root_system/root_lattice_realizations.py", line 2517, in sage.combinat.root_system.root_lattice_realizations.RootLatticeRealizations.ParentMethods.plot_hedron Failed example: RootSystem(["B",3]).ambient_space().plot_hedron() Exception raised: Traceback (most recent call last): File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 720, in _run self.compile_and_execute(example, compiler, test.globs) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 1145, in compile_and_execute exec(compiled, globs) File "<doctest sage.combinat.root_system.root_lattice_realizations.RootLatticeRealizations.ParentMethods.plot_hedron[2]>", line 1, in <module> RootSystem(["B",Integer(3)]).ambient_space().plot_hedron() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/combinat/root_system/root_lattice_realizations.py", line 2551, in plot_hedron return Polyhedron(vertices=vertices).plot() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 1068, in plot projection = project(self, orthonormal) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 1056, in project return polyhedron.projection() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 7661, in projection self.projection = Projection(self) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/plot.py", line 372, in __init__ self._init_from_3d(polyhedron) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/plot.py", line 667, in _init_from_3d self._init_lines_arrows(polyhedron) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/plot.py", line 709, in _init_lines_arrows if polyhedron.vertex_adjacency_matrix()[i,j] == 0: File "sage/misc/cachefunc.pyx", line 2310, in sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__ (build/cythonized/sage/misc/cachefunc.c:12906) self.cache = f(self._instance) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 2692, in vertex_adjacency_matrix return self._vertex_adjacency_matrix() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 471, in _vertex_adjacency_matrix face_lattice = self.face_lattice() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 6498, in face_lattice return FiniteLatticePoset(self.hasse_diagram()) File "sage/misc/cachefunc.pyx", line 2310, in sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__ (build/cythonized/sage/misc/cachefunc.c:12906) self.cache = f(self._instance) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 6526, in hasse_diagram return D.relabel(index_to_polyhedron_face, inplace=False, immutable=True) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/graphs/generic_graph.py", line 21431, in relabel perm2 = G.relabel(perm, File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/graphs/generic_graph.py", line 21499, in relabel raise NotImplementedError("Non injective relabeling") NotImplementedError: Non injective relabeling ********************************************************************** File "src/sage/combinat/root_system/root_lattice_realizations.py", line 2519, in sage.combinat.root_system.root_lattice_realizations.RootLatticeRealizations.ParentMethods.plot_hedron Failed example: RootSystem(["C",3]).ambient_space().plot_hedron() Exception raised: Traceback (most recent call last): File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 720, in _run self.compile_and_execute(example, compiler, test.globs) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 1145, in compile_and_execute exec(compiled, globs) File "<doctest sage.combinat.root_system.root_lattice_realizations.RootLatticeRealizations.ParentMethods.plot_hedron[3]>", line 1, in <module> RootSystem(["C",Integer(3)]).ambient_space().plot_hedron() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/combinat/root_system/root_lattice_realizations.py", line 2551, in plot_hedron return Polyhedron(vertices=vertices).plot() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 1068, in plot projection = project(self, orthonormal) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 1056, in project return polyhedron.projection() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 7661, in projection self.projection = Projection(self) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/plot.py", line 372, in __init__ self._init_from_3d(polyhedron) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/plot.py", line 667, in _init_from_3d self._init_lines_arrows(polyhedron) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/plot.py", line 709, in _init_lines_arrows if polyhedron.vertex_adjacency_matrix()[i,j] == 0: File "sage/misc/cachefunc.pyx", line 2310, in sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__ (build/cythonized/sage/misc/cachefunc.c:12906) self.cache = f(self._instance) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 2692, in vertex_adjacency_matrix return self._vertex_adjacency_matrix() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 471, in _vertex_adjacency_matrix face_lattice = self.face_lattice() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 6498, in face_lattice return FiniteLatticePoset(self.hasse_diagram()) File "sage/misc/cachefunc.pyx", line 2310, in sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__ (build/cythonized/sage/misc/cachefunc.c:12906) self.cache = f(self._instance) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 6526, in hasse_diagram return D.relabel(index_to_polyhedron_face, inplace=False, immutable=True) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/graphs/generic_graph.py", line 21431, in relabel perm2 = G.relabel(perm, File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/graphs/generic_graph.py", line 21499, in relabel raise NotImplementedError("Non injective relabeling") NotImplementedError: Non injective relabeling ********************************************************************** File "src/sage/combinat/root_system/root_lattice_realizations.py", line 2527, in sage.combinat.root_system.root_lattice_realizations.RootLatticeRealizations.ParentMethods.plot_hedron Failed example: RootSystem(["F",4]).ambient_space().plot_hedron() # long time Exception raised: Traceback (most recent call last): File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 720, in _run self.compile_and_execute(example, compiler, test.globs) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 1145, in compile_and_execute exec(compiled, globs) File "<doctest sage.combinat.root_system.root_lattice_realizations.RootLatticeRealizations.ParentMethods.plot_hedron[5]>", line 1, in <module> RootSystem(["F",Integer(4)]).ambient_space().plot_hedron() # long time File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/combinat/root_system/root_lattice_realizations.py", line 2551, in plot_hedron return Polyhedron(vertices=vertices).plot() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 1068, in plot projection = project(self, orthonormal) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 1064, in project return polyhedron.schlegel_projection(position=position) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 7768, in schlegel_projection proj = self.projection() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 7661, in projection self.projection = Projection(self) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/plot.py", line 375, in __init__ self._init_lines_arrows(polyhedron) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/plot.py", line 709, in _init_lines_arrows if polyhedron.vertex_adjacency_matrix()[i,j] == 0: File "sage/misc/cachefunc.pyx", line 2310, in sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__ (build/cythonized/sage/misc/cachefunc.c:12906) self.cache = f(self._instance) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 2692, in vertex_adjacency_matrix return self._vertex_adjacency_matrix() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 471, in _vertex_adjacency_matrix face_lattice = self.face_lattice() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 6498, in face_lattice return FiniteLatticePoset(self.hasse_diagram()) File "sage/misc/cachefunc.pyx", line 2310, in sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__ (build/cythonized/sage/misc/cachefunc.c:12906) self.cache = f(self._instance) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 6526, in hasse_diagram return D.relabel(index_to_polyhedron_face, inplace=False, immutable=True) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/graphs/generic_graph.py", line 21431, in relabel perm2 = G.relabel(perm, File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/graphs/generic_graph.py", line 21499, in relabel raise NotImplementedError("Non injective relabeling") NotImplementedError: Non injective relabeling ********************************************************************** 1 item had failures: 3 of 9 in sage.combinat.root_system.root_lattice_realizations.RootLatticeRealizations.ParentMethods.plot_hedron [645 tests, 3 failures, 54.31 s] ********************************************************************** File "src/sage/geometry/polyhedron/backend_cdd.py", line 559, in sage.geometry.polyhedron.backend_cdd.Polyhedron_RDF_cdd._init_from_Vrepresentation_and_Hrepresentation Failed example: P.is_combinatorially_isomorphic(Q) Expected: True Got: False ********************************************************************** File "src/sage/geometry/polyhedron/backend_cdd.py", line 562, in sage.geometry.polyhedron.backend_cdd.Polyhedron_RDF_cdd._init_from_Vrepresentation_and_Hrepresentation Failed example: P.is_combinatorially_isomorphic(R) Expected: True Got: False ********************************************************************** 1 item had failures: 2 of 20 in sage.geometry.polyhedron.backend_cdd.Polyhedron_RDF_cdd._init_from_Vrepresentation_and_Hrepresentation [67 tests, 2 failures, 1.75 s] ********************************************************************** File "src/sage/geometry/polyhedron/combinatorial_polyhedron/base.pyx", line 1052, in sage.geometry.polyhedron.combinatorial_polyhedron.base.CombinatorialPolyhedron.incidence_matrix Failed example: C.incidence_matrix() == P.incidence_matrix() Expected: True Got: False ********************************************************************** File "src/sage/geometry/polyhedron/combinatorial_polyhedron/base.pyx", line 2285, in sage.geometry.polyhedron.combinatorial_polyhedron.base.CombinatorialPolyhedron.face_iter Failed example: face.ambient_Vrepresentation() Expected: (A vertex at (1, 3, 2, 5, 4), A vertex at (2, 3, 1, 5, 4), A vertex at (3, 1, 2, 5, 4), A vertex at (3, 2, 1, 5, 4), A vertex at (2, 1, 3, 5, 4), A vertex at (1, 2, 3, 5, 4)) Got: (A vertex at (1, 3, 2, 5, 4), A vertex at (3, 1, 2, 5, 4), A vertex at (3, 2, 1, 5, 4), A vertex at (2, 1, 3, 5, 4), A vertex at (1, 2, 3, 5, 4)) ********************************************************************** File "src/sage/geometry/polyhedron/combinatorial_polyhedron/base.pyx", line 2294, in sage.geometry.polyhedron.combinatorial_polyhedron.base.CombinatorialPolyhedron.face_iter Failed example: face.ambient_Vrepresentation() Expected: (A vertex at (2, 1, 4, 5, 3), A vertex at (3, 2, 4, 5, 1), A vertex at (3, 1, 4, 5, 2), A vertex at (1, 3, 4, 5, 2), A vertex at (1, 2, 4, 5, 3), A vertex at (2, 3, 4, 5, 1)) Got: (A vertex at (3, 2, 4, 5, 1), A vertex at (3, 1, 4, 5, 2), A vertex at (1, 3, 4, 5, 2), A vertex at (1, 2, 4, 5, 3), A vertex at (2, 3, 4, 5, 1)) ********************************************************************** File "src/sage/geometry/polyhedron/combinatorial_polyhedron/base.pyx", line 2311, in sage.geometry.polyhedron.combinatorial_polyhedron.base.CombinatorialPolyhedron.face_iter Failed example: face.ambient_V_indices() Expected: (32, 89, 90, 94) Got: (89, 90, 94) ********************************************************************** 2 items had failures: 3 of 20 in sage.geometry.polyhedron.combinatorial_polyhedron.base.CombinatorialPolyhedron.face_iter 1 of 25 in sage.geometry.polyhedron.combinatorial_polyhedron.base.CombinatorialPolyhedron.incidence_matrix [572 tests, 4 failures, 1.40 s] ********************************************************************** File "src/sage/geometry/polyhedron/combinatorial_polyhedron/combinatorial_face.pyx", line 421, in sage.geometry.polyhedron.combinatorial_polyhedron.combinatorial_face.CombinatorialFace.ambient_Vrepresentation Failed example: face.ambient_Vrepresentation() Expected: (A vertex at (1, 3, 2, 5, 4), A vertex at (2, 3, 1, 5, 4), A vertex at (3, 1, 2, 5, 4), A vertex at (3, 2, 1, 5, 4), A vertex at (2, 1, 3, 5, 4), A vertex at (1, 2, 3, 5, 4)) Got: (A vertex at (1, 3, 2, 5, 4), A vertex at (3, 1, 2, 5, 4), A vertex at (3, 2, 1, 5, 4), A vertex at (2, 1, 3, 5, 4), A vertex at (1, 2, 3, 5, 4)) ********************************************************************** File "src/sage/geometry/polyhedron/combinatorial_polyhedron/combinatorial_face.pyx", line 429, in sage.geometry.polyhedron.combinatorial_polyhedron.combinatorial_face.CombinatorialFace.ambient_Vrepresentation Failed example: face.ambient_Vrepresentation() Expected: (A vertex at (2, 1, 4, 5, 3), A vertex at (3, 2, 4, 5, 1), A vertex at (3, 1, 4, 5, 2), A vertex at (1, 3, 4, 5, 2), A vertex at (1, 2, 4, 5, 3), A vertex at (2, 3, 4, 5, 1)) Got: (A vertex at (3, 2, 4, 5, 1), A vertex at (3, 1, 4, 5, 2), A vertex at (1, 3, 4, 5, 2), A vertex at (1, 2, 4, 5, 3), A vertex at (2, 3, 4, 5, 1)) ********************************************************************** File "src/sage/geometry/polyhedron/combinatorial_polyhedron/combinatorial_face.pyx", line 485, in sage.geometry.polyhedron.combinatorial_polyhedron.combinatorial_face.CombinatorialFace.ambient_V_indices Failed example: next(it).ambient_V_indices() Expected: (32, 91, 92, 93, 94, 95) Got: (91, 92, 93, 94, 95) ********************************************************************** File "src/sage/geometry/polyhedron/combinatorial_polyhedron/combinatorial_face.pyx", line 487, in sage.geometry.polyhedron.combinatorial_polyhedron.combinatorial_face.CombinatorialFace.ambient_V_indices Failed example: next(it).ambient_V_indices() Expected: (32, 89, 90, 94) Got: (89, 90, 94) ********************************************************************** File "src/sage/geometry/polyhedron/combinatorial_polyhedron/combinatorial_face.pyx", line 546, in sage.geometry.polyhedron.combinatorial_polyhedron.combinatorial_face.CombinatorialFace.Vrepr Failed example: face.Vrepr() Expected: doctest:...: DeprecationWarning: the method Vrepr of CombinatorialPolyhedron is deprecated; use ambient_V_indices or ambient_Vrepresentation See https://trac.sagemath.org/28616 for details. (A vertex at (1, 3, 2, 5, 4), A vertex at (2, 3, 1, 5, 4), A vertex at (3, 1, 2, 5, 4), A vertex at (3, 2, 1, 5, 4), A vertex at (2, 1, 3, 5, 4), A vertex at (1, 2, 3, 5, 4)) Got: doctest:warning File "/var/lib/buildbot/slave/sage_git/build/src/bin/sageruntests", line 182, in <module> err = DC.run() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/control.py", line 1237, in run self.run_doctests() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/control.py", line 938, in run_doctests self.dispatcher.dispatch() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 2052, in dispatch self.parallel_dispatch() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 1947, in parallel_dispatch w.start() # This might take some time File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 2219, in start super(DocTestWorker, self).start() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/multiprocessing/process.py", line 121, in start self._popen = self._Popen(self) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/multiprocessing/context.py", line 224, in _Popen return _default_context.get_context().Process._Popen(process_obj) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/multiprocessing/context.py", line 277, in _Popen return Popen(process_obj) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/multiprocessing/popen_fork.py", line 19, in __init__ self._launch(process_obj) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/multiprocessing/popen_fork.py", line 75, in _launch code = process_obj._bootstrap(parent_sentinel=child_r) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap self.run() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 2191, in run task(self.options, self.outtmpfile, msgpipe, self.result_queue) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 2520, in __call__ doctests, extras = self._run(runner, options, results) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 2567, in _run result = runner.run(test) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 918, in run return self._run(test, compileflags, out) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 720, in _run self.compile_and_execute(example, compiler, test.globs) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 1145, in compile_and_execute exec(compiled, globs) File "<doctest sage.geometry.polyhedron.combinatorial_polyhedron.combinatorial_face.CombinatorialFace.Vrepr[4]>", line 1, in <module> face.Vrepr() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/misc/superseded.py", line 100, in deprecation warning(trac_number, message, DeprecationWarning, stacklevel) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/misc/superseded.py", line 146, in warning warn(message, warning_class, stacklevel) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/warnings.py", line 109, in _showwarnmsg sw(msg.message, msg.category, msg.filename, msg.lineno, : DeprecationWarning: the method Vrepr of CombinatorialPolyhedron is deprecated; use ambient_V_indices or ambient_Vrepresentation See https://trac.sagemath.org/28616 for details. (A vertex at (1, 3, 2, 5, 4), A vertex at (3, 1, 2, 5, 4), A vertex at (3, 2, 1, 5, 4), A vertex at (2, 1, 3, 5, 4), A vertex at (1, 2, 3, 5, 4)) ********************************************************************** 3 items had failures: 1 of 6 in sage.geometry.polyhedron.combinatorial_polyhedron.combinatorial_face.CombinatorialFace.Vrepr 2 of 10 in sage.geometry.polyhedron.combinatorial_polyhedron.combinatorial_face.CombinatorialFace.ambient_V_indices 2 of 11 in sage.geometry.polyhedron.combinatorial_polyhedron.combinatorial_face.CombinatorialFace.ambient_Vrepresentation [157 tests, 5 failures, 1.25 s] ********************************************************************** File "src/sage/geometry/polyhedron/combinatorial_polyhedron/conversions.pyx", line 509, in sage.geometry.polyhedron.combinatorial_polyhedron.conversions.? Failed example: for _ in range(10): st = set(randint(0,127) for i in range(40)) tup = tuple(sorted(tuple(st))) faces = _Vrep_list_to_bit_rep_wrapper(tup) output = _bit_rep_to_Vrep_list_wrapper(faces, 0) if not tup == output: print('``bit_rep_to_Vrep_list`` does not behave', 'as the inverse of ``Vrep_list_to_bit_rep``') Expected nothing Got: ``bit_rep_to_Vrep_list`` does not behave as the inverse of ``Vrep_list_to_bit_rep`` ``bit_rep_to_Vrep_list`` does not behave as the inverse of ``Vrep_list_to_bit_rep`` ``bit_rep_to_Vrep_list`` does not behave as the inverse of ``Vrep_list_to_bit_rep`` ``bit_rep_to_Vrep_list`` does not behave as the inverse of ``Vrep_list_to_bit_rep`` ``bit_rep_to_Vrep_list`` does not behave as the inverse of ``Vrep_list_to_bit_rep`` ``bit_rep_to_Vrep_list`` does not behave as the inverse of ``Vrep_list_to_bit_rep`` ``bit_rep_to_Vrep_list`` does not behave as the inverse of ``Vrep_list_to_bit_rep`` ``bit_rep_to_Vrep_list`` does not behave as the inverse of ``Vrep_list_to_bit_rep`` ``bit_rep_to_Vrep_list`` does not behave as the inverse of ``Vrep_list_to_bit_rep`` ``bit_rep_to_Vrep_list`` does not behave as the inverse of ``Vrep_list_to_bit_rep`` ********************************************************************** 1 item had failures: 1 of 20 in sage.geometry.polyhedron.combinatorial_polyhedron.conversions.? [63 tests, 1 failure, 0.29 s] ********************************************************************** File "src/sage/geometry/polyhedron/base.py", line 4859, in sage.geometry.polyhedron.base.Polyhedron_base.join Failed example: C.join(S).is_combinatorially_isomorphic(C.pyramid()) Expected: True Got: False ********************************************************************** 1 item had failures: 1 of 15 in sage.geometry.polyhedron.base.Polyhedron_base.join [1600 tests, 1 failure, 42.35 s] ********************************************************************** File "src/sage/geometry/polyhedron/library.py", line 940, in sage.geometry.polyhedron.library.Polytopes.great_rhombicuboctahedron Failed example: sum(1 for f in gr.facets() if len(f.vertices()) == 6) Expected: 8 Got: 0 ********************************************************************** File "src/sage/geometry/polyhedron/library.py", line 942, in sage.geometry.polyhedron.library.Polytopes.great_rhombicuboctahedron Failed example: sum(1 for f in gr.facets() if len(f.vertices()) == 8) Expected: 6 Got: 4 ********************************************************************** File "src/sage/geometry/polyhedron/library.py", line 1440, in sage.geometry.polyhedron.library.Polytopes.buckyball Failed example: sum(1 for f in bb.facets() if len(f.vertices()) == 5) Expected: 12 Got: 3 ********************************************************************** File "src/sage/geometry/polyhedron/library.py", line 1442, in sage.geometry.polyhedron.library.Polytopes.buckyball Failed example: sum(1 for f in bb.facets() if len(f.vertices()) == 6) Expected: 20 Got: 2 ********************************************************************** File "src/sage/geometry/polyhedron/library.py", line 1615, in sage.geometry.polyhedron.library.Polytopes.truncated_dodecahedron Failed example: sum(1 for f in td.facets() if len(f.vertices()) == 3) Expected: 20 Got: 8 ********************************************************************** File "src/sage/geometry/polyhedron/library.py", line 1617, in sage.geometry.polyhedron.library.Polytopes.truncated_dodecahedron Failed example: sum(1 for f in td.facets() if len(f.vertices()) == 10) Expected: 12 Got: 1 ********************************************************************** File "src/sage/geometry/polyhedron/library.py", line 1868, in sage.geometry.polyhedron.library.Polytopes.truncated_icosidodecahedron Failed example: sum(1 for f in ti.facets() if len(f.vertices()) == 4) Expected: 30 Got: 21 ********************************************************************** File "src/sage/geometry/polyhedron/library.py", line 1870, in sage.geometry.polyhedron.library.Polytopes.truncated_icosidodecahedron Failed example: sum(1 for f in ti.facets() if len(f.vertices()) == 6) Expected: 20 Got: 3 ********************************************************************** File "src/sage/geometry/polyhedron/library.py", line 1872, in sage.geometry.polyhedron.library.Polytopes.truncated_icosidodecahedron Failed example: sum(1 for f in ti.facets() if len(f.vertices()) == 10) Expected: 12 Got: 0 ********************************************************************** 4 items had failures: 2 of 9 in sage.geometry.polyhedron.library.Polytopes.buckyball 2 of 8 in sage.geometry.polyhedron.library.Polytopes.great_rhombicuboctahedron 2 of 9 in sage.geometry.polyhedron.library.Polytopes.truncated_dodecahedron 3 of 10 in sage.geometry.polyhedron.library.Polytopes.truncated_icosidodecahedron [307 tests, 9 failures, 52.94 s] ********************************************************************** File "src/sage/geometry/polyhedron/plot.py", line 452, in sage.geometry.polyhedron.plot.Projection.stereographic Failed example: proj = Projection(polytopes.buckyball()) #long time Exception raised: Traceback (most recent call last): File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 720, in _run self.compile_and_execute(example, compiler, test.globs) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 1145, in compile_and_execute exec(compiled, globs) File "<doctest sage.geometry.polyhedron.plot.Projection.stereographic[1]>", line 1, in <module> proj = Projection(polytopes.buckyball()) #long time File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/plot.py", line 372, in __init__ self._init_from_3d(polyhedron) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/plot.py", line 667, in _init_from_3d self._init_lines_arrows(polyhedron) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/plot.py", line 709, in _init_lines_arrows if polyhedron.vertex_adjacency_matrix()[i,j] == 0: File "sage/misc/cachefunc.pyx", line 2310, in sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__ (build/cythonized/sage/misc/cachefunc.c:12906) self.cache = f(self._instance) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 2692, in vertex_adjacency_matrix return self._vertex_adjacency_matrix() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 471, in _vertex_adjacency_matrix face_lattice = self.face_lattice() File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 6498, in face_lattice return FiniteLatticePoset(self.hasse_diagram()) File "sage/misc/cachefunc.pyx", line 2310, in sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__ (build/cythonized/sage/misc/cachefunc.c:12906) self.cache = f(self._instance) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/geometry/polyhedron/base.py", line 6526, in hasse_diagram return D.relabel(index_to_polyhedron_face, inplace=False, immutable=True) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/graphs/generic_graph.py", line 21431, in relabel perm2 = G.relabel(perm, File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/graphs/generic_graph.py", line 21499, in relabel raise NotImplementedError("Non injective relabeling") NotImplementedError: Non injective relabeling ********************************************************************** File "src/sage/geometry/polyhedron/plot.py", line 453, in sage.geometry.polyhedron.plot.Projection.stereographic Failed example: proj #long time Exception raised: Traceback (most recent call last): File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 720, in _run self.compile_and_execute(example, compiler, test.globs) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 1145, in compile_and_execute exec(compiled, globs) File "<doctest sage.geometry.polyhedron.plot.Projection.stereographic[2]>", line 1, in <module> proj #long time NameError: name 'proj' is not defined ********************************************************************** File "src/sage/geometry/polyhedron/plot.py", line 455, in sage.geometry.polyhedron.plot.Projection.stereographic Failed example: proj.stereographic([5,2,3]).plot() #long time Exception raised: Traceback (most recent call last): File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 720, in _run self.compile_and_execute(example, compiler, test.globs) File "/var/lib/buildbot/slave/sage_git/build/local/lib/python3.8/sitepackages/sage/doctest/forker.py", line 1145, in compile_and_execute exec(compiled, globs) File "<doctest sage.geometry.polyhedron.plot.Projection.stereographic[3]>", line 1, in <module> proj.stereographic([Integer(5),Integer(2),Integer(3)]).plot() #long time NameError: name 'proj' is not defined ********************************************************************** 1 item had failures: 3 of 6 in sage.geometry.polyhedron.plot.Projection.stereographic [239 tests, 3 failures, 8.48 s] R[write to console]: Warning messages: R[write to console]: 1: R[write to console]: In sage10 + sage6 : R[write to console]: R[write to console]: longer object length is not a multiple of shorter object length R[write to console]: 2: R[write to console]: In sqrt(sage10) : R[write to console]: NaNs produced R[write to console]: 3: R[write to console]: In sqrt(sage4) : R[write to console]: NaNs produced  sage t long randomseed=0 src/sage/combinat/root_system/associahedron.py # 2 doctests failed sage t long randomseed=0 src/sage/combinat/root_system/root_lattice_realizations.py # 3 doctests failed sage t long randomseed=0 src/sage/geometry/polyhedron/backend_cdd.py # 2 doctests failed sage t long randomseed=0 src/sage/geometry/polyhedron/combinatorial_polyhedron/base.pyx # 4 doctests failed sage t long randomseed=0 src/sage/geometry/polyhedron/combinatorial_polyhedron/combinatorial_face.pyx # 5 doctests failed sage t long randomseed=0 src/sage/geometry/polyhedron/combinatorial_polyhedron/conversions.pyx # 1 doctest failed sage t long randomseed=0 src/sage/geometry/polyhedron/base.py # 1 doctest failed sage t long randomseed=0 src/sage/geometry/polyhedron/library.py # 9 doctests failed sage t long randomseed=0 src/sage/geometry/polyhedron/plot.py # 3 doctests failed
comment:16 Changed 2 years ago by
Status:  positive_review → needs_work 

comment:17 Changed 2 years ago by
Milestone:  sage9.3 → sageduplicate/invalid/wontfix 

Status:  needs_work → needs_review 
I honestly don't want to keep working on this anymore. This was supposed to make #30549 a bit easier, but apparently this is not happening.
data_structures/bitsets...
is well tested and is working, what we had before for combinatorial polyhedron was working as well, I guess this intermediate solution is more pain than anything else.
comment:18 Changed 2 years ago by
Authors:  Jonathan Kliem 

Branch:  u/ghkliem/no_more_basic_access 
Commit:  6fa7ac9335dcc1baf8fa086c0b82a3b1e70bde67 
Dependencies:  #30492, #30524 
Status:  needs_review → positive_review 
As you wish.
comment:19 Changed 2 years ago by
Resolution:  → invalid 

Status:  positive_review → closed 
This LGTM although it is making me wonder if we should have our own bitset operations class in Sage. There is the C++ STL bitset, and if we do need something slightly more custom, it would be good as a C++ library that we would then interface with.