def verify(self, inequalities, equations): """ Compare result to PPL if the base ring is QQ. This method is for debugging purposes and compares the computation with another backend if available. INPUT: - ``inequalities``, ``equations`` -- see :class:`Hrep2Vrep`. EXAMPLES:: sage: from sage.geometry.polyhedron.double_description_inhomogeneous import Hrep2Vrep sage: H = Hrep2Vrep(QQ, 1, [(1,2)], []) sage: H.verify([(1,2)], []) """ from sage.rings.all import QQ from sage.geometry.polyhedron.constructor import Polyhedron if self.base_ring is not QQ: return P = Polyhedron(vertices=self.vertices, rays=self.rays, lines=self.lines, base_ring=QQ, ambient_dim=self.dim, backend='ppl') Q = Polyhedron(ieqs=inequalities, eqns=equations, base_ring=QQ, ambient_dim=self.dim, backend='ppl') if (P != Q) or \ (len(self.vertices) != P.n_vertices()) or \ (len(self.rays) != P.n_rays()) or \ (len(self.lines) != P.n_lines()): print('incorrect!', end="") print(Q.Vrepresentation()) print(P.Hrepresentation())
def verify(self): r""" Validate the double description pair. This method used the PPL backend to check that the double description pair is valid. An assertion is triggered if it is not. Does nothing if the base ring is not `\QQ`. EXAMPLES:: sage: from sage.geometry.polyhedron.double_description import \ ....: DoubleDescriptionPair, Problem sage: A = matrix(QQ, [(1,0,1), (0,1,1), (-1,-1,1)]) sage: alg = Problem(A) sage: DD = DoubleDescriptionPair(alg, ....: [(1, 0, 3), (0, 1, 1), (-1, -1, 1)], ....: [(2/3, -1/3, 1/3), (-1/3, 2/3, 1/3), (-1/3, -1/3, 1/3)]) sage: DD.verify() Traceback (most recent call last): ... assert A_cone == R_cone AssertionError """ from sage.geometry.polyhedron.constructor import Polyhedron if self.problem.base_ring() is not QQ: return A_cone = self.cone() R_cone = Polyhedron(vertices=[[self.zero] * self.problem.dim()], rays=self.R, base_ring=self.problem.base_ring(), backend='ppl') assert A_cone == R_cone assert A_cone.n_inequalities() <= len(self.A) assert R_cone.n_rays() == len(self.R)
def verify(self): r""" Validate the double description pair. This method used the PPL backend to check that the double description pair is valid. An assertion is triggered if it is not. Does nothing if the base ring is not `\QQ`. EXAMPLES:: sage: from sage.geometry.polyhedron.double_description import \ ....: DoubleDescriptionPair, Problem sage: A = matrix(QQ, [(1,0,1), (0,1,1), (-1,-1,1)]) sage: alg = Problem(A) sage: DD = DoubleDescriptionPair(alg, ....: [(1, 0, 3), (0, 1, 1), (-1, -1, 1)], ....: [(2/3, -1/3, 1/3), (-1/3, 2/3, 1/3), (-1/3, -1/3, 1/3)]) sage: DD.verify() Traceback (most recent call last): ... assert A_cone == R_cone AssertionError """ from sage.geometry.polyhedron.constructor import Polyhedron if self.problem.base_ring() is not QQ: return A_cone = self.cone() R_cone = Polyhedron(vertices=[[self.zero] * self.problem.dim()], rays=self.R, base_ring=self.problem.base_ring(), backend='ppl') assert A_cone == R_cone assert A_cone.n_inequalities() <= len(self.A) assert R_cone.n_rays() == len(self.R)
def verify(self, inequalities, equations): """ Compare result to PPL if the base ring is QQ. This method is for debugging purposes and compares the computation with another backend if available. INPUT: - ``inequalities``, ``equations`` -- see :class:`Hrep2Vrep`. EXAMPLES:: sage: from sage.geometry.polyhedron.double_description_inhomogeneous import Hrep2Vrep sage: H = Hrep2Vrep(QQ, 1, [(1,2)], []) sage: H.verify([(1,2)], []) """ from sage.rings.all import QQ from sage.geometry.polyhedron.constructor import Polyhedron if self.base_ring is not QQ: return P = Polyhedron(vertices=self.vertices, rays=self.rays, lines=self.lines, base_ring=QQ, ambient_dim=self.dim, backend='ppl') Q = Polyhedron(ieqs=inequalities, eqns=equations, base_ring=QQ, ambient_dim=self.dim, backend='ppl') if (P != Q) or \ (len(self.vertices) != P.n_vertices()) or \ (len(self.rays) != P.n_rays()) or \ (len(self.lines) != P.n_lines()): print 'incorrect!', print Q.Vrepresentation() print P.Hrepresentation()