Page 1 of 1

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

Posted: 29 Dec 2012, 05:01
by Jack Love
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.

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

Posted: 31 Dec 2012, 11:11
by joswig
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->[0]; 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->[0]; 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