Both arguments must lie in the same ambient space. Then isFace computes all faces of Y with the dimension of X and checks if one of them is X.
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 : Q = convexHull matrix{{1,1,1},{1,1,-1},{1,-1,1}} o2 = {ambient dimension => 3 } dimension of lineality space => 0 dimension of polyhedron => 2 number of facets => 3 number of rays => 0 number of vertices => 3 o2 : Polyhedron |
i3 : isFace(Q,P) o3 = false |
Thus, Q is not a face of P, but we can extend it to a face.
i4 : v = matrix{{1},{-1},{-1}}; 3 1 o4 : Matrix ZZ <--- ZZ |
i5 : Q = convexHull{Q,v} o5 = {ambient dimension => 3 } dimension of lineality space => 0 dimension of polyhedron => 2 number of facets => 4 number of rays => 0 number of vertices => 4 o5 : Polyhedron |
i6 : isFace(Q,P) o6 = true |
The object isFace is a method function.