 ## rephrasing my vert(hom(p, q)) question

General discussion on polymake goes here.
Jack Love
Posts: 6
Joined: 13 Nov 2012, 23:44

### rephrasing my vert(hom(p, q)) question

Here is an example of a full-rank vertex of $\hom(\Box_3, \Diamond_4)$, where $\Box_3$ is the unit cube in the positive orthant and $\Diamond_4$ is the standard 4D cross polytope (ie., with vertices at $\pm e_i$); the vertex is expressed in two ways:

v0*F11,v0*F15,
v1*F4,v1*F7,v1*F9,v1*F11,
v2*F4,v2*F5,v2*F6,v2*F7,
v3*F6,v3*F10,
v4*F12,v4*F13,v4*F14,v4*F15,
v5*F9,v5*F13,
v6*F5,v6*F8,
v7*F8,v7*F10,v7*F12,v7*F14:
1 1/3 -1/3 -1/3 1/3 0 -1/3 -1/3 1/3 1/3 -1/3 0 -1/3 -1/3 -1/3 2/3 1/3

Can I have Polymake express this vertex as an explicit affine map, i.e., a linear map and a shift vector? Or is there some way that I can find that expression in terms of what is shown here? None of the vertices of $p$ are sent to vertices of $q$, but rather to faces of dimension 1 or 2, so the vertex-facet pairing doesn't give precise coordinates for the images of the vertices of $p$.

The motivation for this question: We were not expecting to find such full-rank vertex embeddings, and we want to figure out how to count them.

Thank you in advance for any help.

joswig
Main Author
Posts: 232
Joined: 24 Dec 2010, 11:10

### Re: rephrasing my vert(hom(p, q)) question

Everything works like described in
The coordinates of Hom(P,Q) are grouped into dim Q blocks of length (dim P + 1). Each of these blocks of length dim P + 1 gives a column of the transformation. Since we are working with homogeneous coordinates we use projective transformations (to be applied to points, which are row vectors, on the right). The first row (indexed 0) is the translation.

Let me do a small example.

Code: Select all

polytope > $P=cube(2,0);$Q=cross(3); polytope > $Hom_PQ=mapping_polytope($P,$Q,relabel=>1); polytope > print$Hom_PQ->VERTEX_LABELS->; v0*F0,v0*F2,v0*F4,v0*F6,v1*F0,v1*F1,v1*F2,v1*F3,v2*F0,v2*F2,v2*F4,v2*F6,v3*F0,v3*F1,v3*F2,v3*F3 polytope > $encoded_affine_map=$Hom_PQ->VERTICES->; polytope > print $encoded_affine_map; 1 1 -1 0 0 0 0 0 1 0 polytope >$A = new Matrix($P->DIM+1,$Q->DIM); polytope > for (my $j=0;$j<$Q->DIM; ++$j) { $A->col($j)=$encoded_affine_map->slice(1+$j*($P->DIM+1),$P->DIM+1) } polytope > $projective_transformation=unit_vector($P->DIM+1,0)|$A; polytope > print$projective_transformation; 1 1 0 0 0 -1 0 1 0 0 0 0 polytope > print $P->VERTICES *$projective_transformation; 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 1 