Description
When computing a face
f of a polyhedron
P with the function
faces, it is stored in the cache that
f is a face of
P. Then the function
polarFace computes the
polar P' of
P and the corresponding face of
P' on which all points of
f attain their minimum. Note that this function only works correctly for polyhedra with the origin in its relative interior.
i1 : P = hypercube 3
o1 = {ambient dimension => 3 }
dimension of lineality space => 0
dimension of polyhedron => 3
number of facets => 6
number of rays => 0
number of vertices => 8
o1 : Polyhedron

i2 : f = first faces(1,P)
o2 = {ambient dimension => 3 }
dimension of lineality space => 0
dimension of polyhedron => 2
number of facets => 4
number of rays => 0
number of vertices => 4
o2 : Polyhedron

i3 : fv = polarFace f
o3 = {ambient dimension => 3 }
dimension of lineality space => 0
dimension of polyhedron => 1
number of facets => 0
number of rays => 0
number of vertices => 0
o3 : Polyhedron

i4 : vertices fv
o4 = 0
3
o4 : Matrix QQ < 0

If
f is not a face of another polytope, then it considers
f as a face of itself. Thus, it computes the polar of
f, and returns the empty polyhedron as a face of the polar of
f.
i5 : P = hypercube 3
o5 = {ambient dimension => 3 }
dimension of lineality space => 0
dimension of polyhedron => 3
number of facets => 6
number of rays => 0
number of vertices => 8
o5 : Polyhedron

i6 : polarFace P
o6 = {ambient dimension => 3 }
dimension of lineality space => 0
dimension of polyhedron => 1
number of facets => 0
number of rays => 0
number of vertices => 0
o6 : Polyhedron
