- # Create the *dual* cone of the cross-positive operators,
- # expressed as long vectors. WARNING: check=True is necessary
- # even though it makes Cone() take forever. For an example take
- # K = Cone([(1,0,0),(0,0,1),(0,0,-1)]).
- Sigma_dual = Cone(vectors, lattice=ToricLattice(W.dimension()))
+ check = True
+ if K.is_solid() or K.is_strictly_convex():
+ # The lineality space of either ``K`` or ``K.dual()`` is
+ # trivial and it's easy to show that our generating set is
+ # minimal. I would love a proof that this works when ``K`` is
+ # neither pointed nor solid.
+ #
+ # Note that in that case we can get *duplicates*, since the
+ # tensor product of (x,s) is the same as that of (-x,-s).
+ check = False
+
+ # Create the dual cone of the cross-positive operators,
+ # expressed as long vectors.
+ Sigma_dual = Cone(vectors, lattice=ToricLattice(W.dimension()), check=check)