Parents for Polyhedra¶
-
sage.geometry.polyhedron.parent.
Polyhedra
(base_ring, ambient_dim, backend=None)¶ Construct a suitable parent class for polyhedra
INPUT:
base_ring
– A ring. Currently there are backends for Z, Q, and R.ambient_dim
– integer. The ambient space dimension.backend
– string. The name of the backend for computations. There areseveral backends implemented:
backend="ppl"
uses the Parma Polyhedra Librarybackend="cdd"
uses CDDbackend="normaliz"
uses normalizbackend="polymake"
uses polymakebackend="field"
a generic Sage implementation
OUTPUT:
A parent class for polyhedra over the given base ring if the backend supports it. If not, the parent base ring can be larger (for example, Q instead of Z). If there is no implementation at all, a
ValueError
is raised.EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: Polyhedra(AA, 3) Polyhedra in AA^3 sage: Polyhedra(ZZ, 3) Polyhedra in ZZ^3 sage: type(_) <class 'sage.geometry.polyhedron.parent.Polyhedra_ZZ_ppl_with_category'> sage: Polyhedra(QQ, 3, backend='cdd') Polyhedra in QQ^3 sage: type(_) <class 'sage.geometry.polyhedron.parent.Polyhedra_QQ_cdd_with_category'>
CDD does not support integer polytopes directly:
sage: Polyhedra(ZZ, 3, backend='cdd') Polyhedra in QQ^3
-
class
sage.geometry.polyhedron.parent.
Polyhedra_QQ_cdd
(base_ring, ambient_dim, backend)¶ Bases:
sage.geometry.polyhedron.parent.Polyhedra_base
-
Element
¶ alias of
sage.geometry.polyhedron.backend_cdd.Polyhedron_QQ_cdd
-
-
class
sage.geometry.polyhedron.parent.
Polyhedra_QQ_normaliz
(base_ring, ambient_dim, backend)¶ Bases:
sage.geometry.polyhedron.parent.Polyhedra_base
-
Element
¶ alias of
sage.geometry.polyhedron.backend_normaliz.Polyhedron_QQ_normaliz
-
-
class
sage.geometry.polyhedron.parent.
Polyhedra_QQ_ppl
(base_ring, ambient_dim, backend)¶ Bases:
sage.geometry.polyhedron.parent.Polyhedra_base
-
Element
¶ alias of
sage.geometry.polyhedron.backend_ppl.Polyhedron_QQ_ppl
-
-
class
sage.geometry.polyhedron.parent.
Polyhedra_RDF_cdd
(base_ring, ambient_dim, backend)¶ Bases:
sage.geometry.polyhedron.parent.Polyhedra_base
-
Element
¶ alias of
sage.geometry.polyhedron.backend_cdd.Polyhedron_RDF_cdd
-
-
class
sage.geometry.polyhedron.parent.
Polyhedra_ZZ_normaliz
(base_ring, ambient_dim, backend)¶ Bases:
sage.geometry.polyhedron.parent.Polyhedra_base
-
Element
¶ alias of
sage.geometry.polyhedron.backend_normaliz.Polyhedron_ZZ_normaliz
-
-
class
sage.geometry.polyhedron.parent.
Polyhedra_ZZ_ppl
(base_ring, ambient_dim, backend)¶ Bases:
sage.geometry.polyhedron.parent.Polyhedra_base
-
Element
¶ alias of
sage.geometry.polyhedron.backend_ppl.Polyhedron_ZZ_ppl
-
-
class
sage.geometry.polyhedron.parent.
Polyhedra_base
(base_ring, ambient_dim, backend)¶ Bases:
sage.structure.unique_representation.UniqueRepresentation
,sage.structure.parent.Parent
Polyhedra in a fixed ambient space.
INPUT:
base_ring
– eitherZZ
,QQ
, orRDF
. The base ring of the ambient module/vector space.ambient_dim
– integer. The ambient space dimension.backend
– string. The name of the backend for computations. There areseveral backends implemented:
backend="ppl"
uses the Parma Polyhedra Librarybackend="cdd"
uses CDDbackend="normaliz"
uses normalizbackend="polymake"
uses polymakebackend="field"
a generic Sage implementation
EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: Polyhedra(ZZ, 3) Polyhedra in ZZ^3
-
Hrepresentation_space
()¶ Return the linear space containing the H-representation vectors.
OUTPUT:
A free module over the base ring of dimension
ambient_dim()
+ 1.EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: Polyhedra(ZZ, 2).Hrepresentation_space() Ambient free module of rank 3 over the principal ideal domain Integer Ring
-
Vrepresentation_space
()¶ Return the ambient vector space.
This is the vector space or module containing the Vrepresentation vectors.
OUTPUT:
A free module over the base ring of dimension
ambient_dim()
.EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: Polyhedra(QQ, 4).Vrepresentation_space() Vector space of dimension 4 over Rational Field sage: Polyhedra(QQ, 4).ambient_space() Vector space of dimension 4 over Rational Field
-
ambient_dim
()¶ Return the dimension of the ambient space.
EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: Polyhedra(QQ, 3).ambient_dim() 3
-
ambient_space
()¶ Return the ambient vector space.
This is the vector space or module containing the Vrepresentation vectors.
OUTPUT:
A free module over the base ring of dimension
ambient_dim()
.EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: Polyhedra(QQ, 4).Vrepresentation_space() Vector space of dimension 4 over Rational Field sage: Polyhedra(QQ, 4).ambient_space() Vector space of dimension 4 over Rational Field
-
an_element
()¶ Returns a Polyhedron.
EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: Polyhedra(QQ, 4).an_element() A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 5 vertices
-
backend
()¶ Return the backend.
EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: Polyhedra(QQ, 3).backend() 'ppl'
-
base_extend
(base_ring, backend=None, ambient_dim=None)¶ Return the base extended parent.
INPUT:
base_ring
,backend
– seePolyhedron()
.ambient_dim
– if notNone
change ambient dimension accordingly.
EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: Polyhedra(ZZ,3).base_extend(QQ) Polyhedra in QQ^3 sage: Polyhedra(ZZ,3).an_element().base_extend(QQ) A 3-dimensional polyhedron in QQ^3 defined as the convex hull of 4 vertices sage: Polyhedra(QQ, 2).base_extend(ZZ) Polyhedra in QQ^2
-
change_ring
(base_ring, backend=None, ambient_dim=None)¶ Return the parent with the new base ring.
INPUT:
base_ring
,backend
– seePolyhedron()
.ambient_dim
– if notNone
change ambient dimension accordingly.
EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: Polyhedra(ZZ,3).change_ring(QQ) Polyhedra in QQ^3 sage: Polyhedra(ZZ,3).an_element().change_ring(QQ) A 3-dimensional polyhedron in QQ^3 defined as the convex hull of 4 vertices sage: Polyhedra(RDF, 3).change_ring(QQ).backend() 'cdd' sage: Polyhedra(QQ, 3).change_ring(ZZ, ambient_dim=4) Polyhedra in ZZ^4 sage: Polyhedra(QQ, 3, backend='cdd').change_ring(QQ, ambient_dim=4).backend() 'cdd'
-
empty
()¶ Return the empty polyhedron.
EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: P = Polyhedra(QQ, 4) sage: P.empty() The empty polyhedron in QQ^4 sage: P.empty().is_empty() True
-
recycle
(polyhedron)¶ Recycle the H/V-representation objects of a polyhedron.
This speeds up creation of new polyhedra by reusing objects. After recycling a polyhedron object, it is not in a consistent state any more and neither the polyhedron nor its H/V-representation objects may be used any more.
INPUT:
polyhedron
– a polyhedron whose parent isself
.
EXAMPLES:
sage: p = Polyhedron([(0,0),(1,0),(0,1)]) sage: p.parent().recycle(p)
-
some_elements
()¶ Returns a list of some elements of the semigroup.
EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: Polyhedra(QQ, 4).some_elements() [A 3-dimensional polyhedron in QQ^4 defined as the convex hull of 4 vertices, A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 1 vertex and 4 rays, A 2-dimensional polyhedron in QQ^4 defined as the convex hull of 2 vertices and 1 ray, The empty polyhedron in QQ^4] sage: Polyhedra(ZZ,0).some_elements() [The empty polyhedron in ZZ^0, A 0-dimensional polyhedron in ZZ^0 defined as the convex hull of 1 vertex]
-
universe
()¶ Return the entire ambient space as polyhedron.
EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: P = Polyhedra(QQ, 4) sage: P.universe() A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 1 vertex and 4 lines sage: P.universe().is_universe() True
-
zero
()¶ Return the polyhedron consisting of the origin, which is the neutral element for Minkowski addition.
EXAMPLES:
sage: from sage.geometry.polyhedron.parent import Polyhedra sage: p = Polyhedra(QQ, 4).zero(); p A 0-dimensional polyhedron in QQ^4 defined as the convex hull of 1 vertex sage: p+p == p True
-
class
sage.geometry.polyhedron.parent.
Polyhedra_field
(base_ring, ambient_dim, backend)¶ Bases:
sage.geometry.polyhedron.parent.Polyhedra_base
-
Element
¶ alias of
sage.geometry.polyhedron.backend_field.Polyhedron_field
-
-
class
sage.geometry.polyhedron.parent.
Polyhedra_normaliz
(base_ring, ambient_dim, backend)¶ Bases:
sage.geometry.polyhedron.parent.Polyhedra_base
-
Element
¶ alias of
sage.geometry.polyhedron.backend_normaliz.Polyhedron_normaliz
-
-
class
sage.geometry.polyhedron.parent.
Polyhedra_polymake
(base_ring, ambient_dim, backend)¶ Bases:
sage.geometry.polyhedron.parent.Polyhedra_base
-
Element
¶ alias of
sage.geometry.polyhedron.backend_polymake.Polyhedron_polymake
-
-
sage.geometry.polyhedron.parent.
does_backend_handle_base_ring
(base_ring, backend)¶ Return true, if
backend
can handlebase_ring
.EXAMPLES:
sage: from sage.geometry.polyhedron.parent import does_backend_handle_base_ring sage: does_backend_handle_base_ring(QQ, 'ppl') True sage: does_backend_handle_base_ring(QQ[sqrt(5)], 'ppl') False sage: does_backend_handle_base_ring(QQ[sqrt(5)], 'field') True