lat = K.lattice()
if not orthogonal:
- # Open question: is this generating set guaranteed to be
- # minimal?
+ # This generating set is guaranteed to be minimal. If it's
+ # not, then using the orthogonal decomposition of the
+ # generators into g = g1 + g2, we find that one of the g2
+ # components is redundant for the projected cone. But this
+ # would contradict the minimality of those generators.
pm_lines = [c*l for c in [-1,1] for l in K.lines()]
- return Cone([r for r in K if not r in pm_lines], lattice=lat)
+ return Cone([r for r in K if not r in pm_lines],
+ lattice=lat,
+ check=False)
# We need to compute inner products and doing it in the ambient
# vector space (rather than in a more picky lattice) is the
if not (v := V(r)) in linspace
]
- # Open question: is THIS generating set minimal? The orthogonal
- # projections are, but what about ours?
- return (Cone(P_rays, lattice=lat))
+ # This should be minimal. The orthogonal-projected generators are
+ # minimal, and ours are the orthogonal projections of a scaled
+ # set. By linearity it should work out.
+ return Cone(P_rays, lattice=lat, check=False)