[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Cones and Polyhedra

Subsections

Generators of Cones

ZGenerators(C) : TorCon -> SeqEnum
    level: RngIntElt                    Default: infinity
If C lies in a toric lattice L, then return a finite sequence of elements of L that generate C as a monoid. If specified, the parameter level restricts the search for generators to that given level; this assumes that C is graded.
RGenerators(C) : TorCon -> SeqEnum
MinimalRGenerators(C) : TorCon -> SeqEnum
If C lies in a toric lattice L, then return a finite sequence of elements of L that generate C over Q_ +. The list is forced to be minimal for MinimalRGenerators, but might not be otherwise.
Points(C,H,h) : TorCon,TorLatElt,FldRatElt -> SetEnum
The set of integral lattice points in the cone C contained in the hyperplane given by the section determined by the dual lattice element H at height given by the rational number h. The intersection of H with C is required to be compact.

Example Polyhedra_toric-cone-sublattice-example (H143E6)

Here we find the generators of a cone in the sublattice spanned by its defining lattice points. First build some points in a toric lattice and make the cone they generate.

> L := ToricLattice(4);
> B := [ L | [1,2,3,-3], [-1,0,1,0], [1,2,1,-2], [2,0,0,-1], [0,0,2,-1] ];
> L1,f := Sublattice(B);
> Dimension(L1);
3
> C := Cone(B);
> Points(Polytope(B));
{
    (1, 2, 1, -2),
    (2, 0, 0, -1),
    (-1, 0, 1, 0),
    (1, 2, 3, -3),
    (1, 0, 1, -1),
    (0, 0, 2, -1),
    (0, 1, 1, -1),
    (1, 1, 2, -2)
}
> ZGenerators(C);
[
    (-1, 0, 1, 0),
    (0, 1, 1, -1),
    (1, 2, 1, -2),
    (2, 0, 0, -1)
]
Using the embedding map f, pull the cone back to the lattice span of C.

> C1 := C @@ f;
In the smaller lattice, this cone is nonsingular.

> IsNonsingular(C1);
true
We can find out which points generate the cone in the smaller lattice and compare them with the generators of the original cone.

> B1 := ZGenerators(C1);
> B1;
[
    (-1, 0, 1),
    (1, 1, 0),
    (2, 0, -1)
]
> [ Index(B,Image(f,b)) : b in B1 ];
[ 2, 3, 4 ]

Properties of Polyhedra

CompactPart(P) : TorPol -> TorPol
The polytope defined by taking the convex hull of the vertices of the polyhedron P. This is the smallest polytope which can occur as a factor in an expression of P as the Minkowski sum of a polytope and a cone.
IntegralPart(P) : TorPol -> TorPol
The polyhedron defined by taking the convex hull of the integral points contained in the polyhedron P.
InfinitePart(P) : TorPol -> TorCon
The tail cone of the polyhedron P.
IsEmpty(P) : TorPol -> BoolElt
Return true if and only if the polyhedron P is empty.

Example Polyhedra_toric-polar-cone-example (H143E7)

One can build a polytope as the convex hull of a finite sequence of points---these may be elements of a toric lattice or simply sequences of integer or rational coefficients.

> P := Polytope([[-4,2,1],[0,3,4],[3,1,-3],[3,0,0],[2,-1,1]]);
The polar polyhedron comprises dual vectors that evaluate to at least -1 on P. It is compact if and only if the origin lies in the interior of P.

> D := Polar(P);
> D;
3-dimensional polyhedron D with 3-dimensional finite part with 5 vertices:
    ( 1/2,      1,    -1),
    (-1/3,    1/2,   1/6),
    (-1/3,   1/21,  -2/7),
    (-1/3,  -3/13, -1/13),
    (1/67, -37/67, 11/67)
and 3-dimensional infinite part given by a cone with 3 minimal generators:
    (   1,      2,     0),
    (   2,      9,     5),
    (   7,      9,    10)
Since D is infinite, there is no intrinsic to list its integral points, but one can determine whether it contains integral points at all.

> HasIntegralPoint(D); 
true
Computing the span of all the integral points of D is possible.

> IntegralPart(D);
3-dimensional polyhedron with 3-dimensional finite part with 6 vertices:
    (0,  0,  0),
    (0,  1,  0),
    (0,  2,  1),
    (1,  1,  1),
    (1,  2, -1),
    (2,  2,  3)
and 3-dimensional infinite part given by a cone with 3 minimal generators:
    (1,  2,  0),
    (2,  9,  5),
    (7,  9, 10)
The compact and infinite parts of D can be recovered.

> cD := CompactPart(D);
> cD;
3-dimensional polytope cD with 5 vertices:
    ( 1/2,      1,    -1),
    (-1/3,    1/2,   1/6),
    (-1/3,   1/21,  -2/7),
    (-1/3,  -3/13, -1/13),
    (1/67, -37/67, 11/67)
Polytopes are special cases of polyhedra (those whose infinite tail cone is the zero cone, or equivalently those that are compact), and the distinction can be determined.

> IsPolytope(cD);
true
> IsPolytope(D);
false

Example Polyhedra_toric-polyhedron-example (H143E8)

> C:=Cone([[0,1,0],[0,1,1],[1,1,2],[1,1,4]]);
> P:=Polyhedron(C);
> P;
2-dimensional polyhedron P with 1-dimensional finite part with 2  
vertices:
    (1, 2),
    (1, 4)
and 2-dimensional infinite part given by a cone with 2 minimal  
generators:
    (1, 0),
    (1, 1)

> CC:=Cone([[1,0],[1,1]]);
> QQ:=Polytope([[1,2],[1,4]]);
> PP:=CC + QQ;
> PP;
2-dimensional polyhedron PP with 1-dimensional finite part with 2  
vertices:
    (1, 2),
    (1, 4)
and 2-dimensional infinite part given by a cone with 2 minimal  
generators:
    (1, 0),
    (1, 1)
But there's a potential catch.

> PP eq P;
false
> Ambient(PP);
2-dimensional toric lattice Z^2
> Ambient(P);
2-dimensional toric lattice ker <1, 0, 0>
> P:=ChangeAmbient(P,Ambient(PP));
> PP eq P;
true
The ambients are different simply because of the method of construction of the two polyhedra, but they can be forced into the same space.
IsMaximalDimension(C) : TorCon -> BoolElt
IsMaximalDimension(P) : TorPol -> BoolElt
Return true if and only if the cone C or polyhedron P has dimension equal to that of its ambient lattice.
IsStrictlyConvex(C) : TorCon -> BoolElt
Return true if and only if the cone C is strictly convex; that is, if there exists a hyperplane H such that C is contained on one side of H and C meets H in single point 0.
IsSimplicial(C) : TorCon -> BoolElt
IsSimplicial(P) : TorPol -> BoolElt
Return true if and only if the cone C or the polyhedron P is simplicial.
IsSimplex(P) : TorPol -> BoolElt
Return true if and only if the polyhedron P is a simplex.
IsSimple(P) : TorPol -> BoolElt
Return true if and only if the polyhedron P is simple.
IsAffineLinear(P) : TorPol -> BoolElt
Return true if and only if the polyhedron P is an affine linear space.
IsZero(C) : TorCon -> BoolElt
Return true if and only if the cone C is supported at the origin of its ambient toric lattice.

Attributes of Polyhedra

Dimension(C) : TorCon -> RngIntElt
Dimension(P) : TorPol -> RngIntElt
The dimension of the toric cone C or polyhedron P.
Index(C) : TorCon -> RngIntElt
The index of the sublattice generated by the minimal ( R)-generators of the cone C in its linear span.
IsShellable(P) : TorPol -> BoolElt, TorPol, TorLatElt, RngIntElt
Return true if and only if the integral polytope P is shellable; i.e. if there exists a polytope S such that each lattice point u∈P lies on the boundary of v + i * (S - v) for some 0≤i≤k, where v is the barycentre of the vertices of P. If true, also returns S, v, and k.

Combinatorics of Polyhedral Complexes

Ambient(C) : TorCon -> TorLat
Ambient(P) : TorPol -> TorLat
The ambient toric lattice of the toric cone C or polyhedron P.
ChangeAmbient(C,L) : TorCon,TorLat -> TorCon
ChangeAmbient(P,L) : TorPol,TorLat -> TorPol
Make a cone or polyhedron identical to the toric cone C or polyhedron P but lying in the toric lattice L; the identification of the existing ambient toric lattice with L is simply by identification of the two standard bases and it requires the dimensions of the two spaces to be equal.
 [Next][Prev] [Right] [Left] [Up] [Index] [Root]

Version: V2.19 of Wed Apr 24 15:09:57 EST 2013