def _find_isomorphism_to_subreflexive_polytope(self): """ Find an isomorphism to a sub-polytope of a maximal reflexive polytope. OUTPUT: A tuple consisting of the ambient reflexive polytope, the subpolytope, and the embedding of ``self`` into the ambient polytope. EXAMPLES:: sage: from sage.geometry.polyhedron.ppl_lattice_polytope import LatticePolytope_PPL sage: polygon = LatticePolytope_PPL((0,0,2,1),(0,1,2,0),(2,3,0,0),(2,0,0,3)) sage: polygon._find_isomorphism_to_subreflexive_polytope() (A 2-dimensional lattice polytope in ZZ^2 with 3 vertices, A 2-dimensional lattice polytope in ZZ^2 with 4 vertices, The map A*x+b with A= [ 1 1] [ 0 1] [-1 -1] [ 1 0] b = (-1, 0, 3, 0)) sage: ambient, sub, embedding = _ sage: ambient.vertices() ((0, 0), (0, 3), (3, 0)) sage: sub.vertices() ((0, 1), (3, 0), (0, 3), (1, 0)) """ from ppl_lattice_polygon import sub_reflexive_polygons from sage.geometry.polyhedron.lattice_euclidean_group_element import ( LatticePolytopesNotIsomorphicError, LatticePolytopeNoEmbeddingError, ) for p, ambient in sub_reflexive_polygons(): try: return (ambient, p, p.find_isomorphism(self)) except LatticePolytopesNotIsomorphicError: pass from sage.geometry.polyhedron.lattice_euclidean_group_element import LatticePolytopeNoEmbeddingError raise LatticePolytopeNoEmbeddingError("not a sub-polytope of a reflexive polygon")
def _find_isomorphism_to_subreflexive_polytope(self): """ Find an isomorphism to a sub-polytope of a maximal reflexive polytope. OUTPUT: A tuple consisting of the ambient reflexive polytope, the subpolytope, and the embedding of ``self`` into the ambient polytope. EXAMPLES:: sage: from sage.geometry.polyhedron.ppl_lattice_polytope import LatticePolytope_PPL sage: polygon = LatticePolytope_PPL((0,0,2,1),(0,1,2,0),(2,3,0,0),(2,0,0,3)) sage: polygon._find_isomorphism_to_subreflexive_polytope() (A 2-dimensional lattice polytope in ZZ^2 with 3 vertices, A 2-dimensional lattice polytope in ZZ^2 with 4 vertices, The map A*x+b with A= [ 1 1] [ 0 1] [-1 -1] [ 1 0] b = (-1, 0, 3, 0)) sage: ambient, sub, embedding = _ sage: ambient.vertices() ((0, 0), (0, 3), (3, 0)) sage: sub.vertices() ((0, 1), (3, 0), (0, 3), (1, 0)) """ from ppl_lattice_polygon import sub_reflexive_polygons from sage.geometry.polyhedron.lattice_euclidean_group_element import \ LatticePolytopesNotIsomorphicError, LatticePolytopeNoEmbeddingError for p, ambient in sub_reflexive_polygons(): try: return (ambient, p, p.find_isomorphism(self)) except LatticePolytopesNotIsomorphicError: pass from sage.geometry.polyhedron.lattice_euclidean_group_element import \ LatticePolytopeNoEmbeddingError raise LatticePolytopeNoEmbeddingError( 'not a sub-polytope of a reflexive polygon')