If F is projective, then there exists a polyhedron P such that F is the normalFan of P. This means every codimension 1 cone of the Fan corresponds exactly to an edge of the polytope. So consider QQ to the number of all edges. This can be considered as the space of all edge lengths. If we take arbitrary lengths now for every edge we do not get a polytope. But every codimension 2 cone of the fan corresponds to a 2 dimensional face of the polytope and if the edges belonging to this face add up to 0 zero, they form in fact a 2 dimensional face. This gives linear equations on the space of edge lengths and if we intersect these equations with the positive orthant in the space of edge lengths we get a Cone. Thus, there exists such a polytope if and only if there is a vector in this cone with strictly positive entries, since every edge has to appear in the polytope.
IF F is polytopal, the function polytope returns a polytope of which F is the normalFan.
Note that the function first checks if the fan is complete.
i1 : C1 = posHull matrix {{1,0},{0,1}}; |
i2 : C2 = posHull matrix {{1,-1},{0,-2}}; |
i3 : C3 = posHull matrix {{0,-2},{1,-1}}; |
i4 : C4 = posHull matrix {{-1,-2},{-2,-1}}; |
i5 : F = fan{C1,C2,C3,C4} o5 = {ambient dimension => 2 } number of generating cones => 4 number of rays => 4 top dimension of the cones => 2 o5 : Fan |
i6 : isPolytopal F {({ambient dimension => 2 }, {1, 2, 3, 4})} dimension of lineality space => 0 dimension of the cone => 0 number of facets => 0 number of rays => 0 v: {{ambient dimension => 2 }, {ambient dimension => 2 }, {ambient dimension => 2 }} dimension of lineality space => 0 dimension of lineality space => 0 dimension of lineality space => 0 dimension of the cone => 2 dimension of the cone => 2 dimension of the cone => 2 number of facets => 2 number of facets => 2 number of facets => 2 number of rays => 2 number of rays => 2 number of rays => 2 o6 = true |
The object isPolytopal is a method function.