Checks if two smooth polytopes P and Q are isomorphic, i.e. checks if there exist a unitary matrix A with integer entries and a vector v such that Q=A*P+v. Currently the function only works on smooth polytopes.
P=convexHull(matrix{{0,1}}); |
Q=convexHull(matrix{{0,2}}); |
areIsomorphic(P,Q) |
As a standard, areIsomorphic will check if the polytopes are smooth first. This takes some time, so if one is sure that they are smooth then it is possible to suppress this test.
M = transpose matrix{{0,0,0},{1,0,0},{0,1,0},{0,0,1},{1,1,0},{1,0,1},{0,1,1},{1,1,1}} |
P = convexHull(M); |
time areIsomorphic(P,P); |
time areIsomorphic(P,P,smoothTest=>false);
|