Abstract
We discuss the computation of automorphism groups and normal forms of cones and polyhedra in Normaliz and indicate its implementation via nauty. The types of automorphisms include integral, rational, Euclidean and combinatorial, as well as algebraic for polytopes defined over real algebraic number fields. Examples treated in detail are the icosahedron and linear-ordering polytopes whose Euclidean automorphism groups are determined.
Similar content being viewed by others
Avoid common mistakes on your manuscript.
1 Introduction
In this note, we discuss the computation of various types of automorphism groups of cones and polyhedra in the software package Normaliz [7]. Automorphism groups are a classical theme, especially for regular polytopes P and polytopes derived from them. For this class, one wants to understand the groups of rigid motions that map P to itself. Since the extension of Normaliz to real algebraic number fields, regular polytopes can be defined, and their Euclidean automorphisms are computable.
For rational polytopes and cones, we are mainly interested in automorphisms defined over \({{\mathbb {Z}}}\). We have computed the integral automorphism groups for polytopes in [2] and used isomorphism types in the experiments of the project [3]. While these computations were based on our own routines, Normaliz now uses nauty [11] as its engine for the computation of automorphism groups, raising the level of computability and saving computation time by several orders of magnitude. In addition to our own approach, Normaliz also uses the method introduced by Bremner et al. [1] for the computation of automorphism groups.
Automorphism groups are not only interesting for their own sake: They can be exploited in the computation of distinguished lattice points like the Hilbert basis, or enumerative invariants, for example the (lattice normalized) volume. A special version of Normaliz has been used to check Wilf’s conjecture for numerical semigroups of multiplicities \(\le 18\); see Brunset al. [4]. This computation would have been impossible without the exploitation of the group of integral automorphisms of the so-called Kunz polyhedra.
One of the Normaliz algorithms for polytope volumes uses a descent in the face lattice; see Bruns and Ichim [6]. In version 3.9.0, it has now been refined by the identification of isomorphic faces. This requires the computation of integral isomorphism types. Further applications of integral automorphisms and isomorphism types are in preparation.
All computations of automorphism groups and isomorphism types must be reduced to the computation of permutations of finitely many vectors that preserve symmetric bilinear forms defined on the ambient vector space or the natural evaluation of linear forms on vectors. Therefore, one needs a distinguished set of vectors and/or linear forms that are permuted by the automorphisms under consideration. These are not always available, or perhaps only after an extension of the field of definition. We will explain this obstruction when it comes up.
One consequence of the necessity to work with a finite set of vectors or linear forms is that we must pass from a non-pointed cone to its pointed quotient and from a polyhedron to its quotient modulo its maximal linear subspace. This passage together with other simplifying assumptions is explained in Sect. 2. There we also discuss the passage from a polyhedron to the cone over it.
Section 3 is devoted to integral automorphism groups and isomorphism types, the most interesting for Normaliz. For enumerative applications, one must restrict oneself to isomorphisms that respect the degree of vectors, and the passage from a polyhedron to the cone over it endows the latter with another (possibly additional) linear form that allows to go backward from the cone to the polyhedron.
In Sect. 4, we outline the computation of rational, algebraic, Euclidean and combinatorial automorphisms and mention groups of automorphisms whose computation is based on the raw input to Normaliz and does not always yield intrinsic data of the cone or polyhedron defined by the input.
Section 5 explains the preparation of the input to nauty and lists the computation goals of Normaliz that are available for automorphism groups. Finally, in Sect. 6 we illustrate the computations of Normaliz by two classical examples, the icosahedron and the linear-ordering polytopes. The combinatorial automorphism groups of the linear-ordering polytopes have been determined by Fiorini [8]. Inspired by Normaliz computations, we determine the Euclidean automorphism groups.
Data for the computations in this paper (input and output files of Normaliz) are available on request from the author.
2 Preliminaries
For the basic terminology of discrete convex geometry, we refer the reader to Bruns and Gubeladze [5]. In this section, we want to fix some basic assumptions that computationally amount to coordinate transformations and that will be assumed in the following to simplify the formalities. Almost all data that will appear are intrinsic and do not depend on the choice of coordinates.
2.1 Cones
Let C be a cone in \({{\mathbb {R}}}^d\). The first assumption is that C is full dimensional, i.e., \(\dim C = d\). While this restriction may seem completely irrelevant, it is not: The definition of the dual cone \(C^*=\{\lambda \in ({{\mathbb {R}}}^d)^*: \lambda (x) \ge 0 \text { for all } x\in C \}\) depends on it. For the passage to the full-dimensional case, one simply chooses coordinates in the vector subspace \({{\mathbb {R}}}C\) generated by C.
Let \(C_0=\{x \in C: -x\in C \}\). This set of invertible elements of C is a vector subspace of \({{\mathbb {R}}}^d\). The cone \(C/C_0\) is the image of C under the natural projection \({{\mathbb {R}}}^d\rightarrow {{\mathbb {R}}}^d/C_0\). It is pointed, i.e., 0 is its only invertible element. Moreover, one has an isomorphism
of cones. Roughly speaking, the automorphism groups that are our main focus split in the same way. The passage from C to \(C/C_0\) is done by Normaliz. It is inevitable for finiteness results.
The passage to a full-dimensional pointed cone only concerns the structure as an object of real convex geometry. Integral data, for example, Hilbert bases or Hilbert series enumerating lattice points, are defined with respect to a sublattice L of \({{\mathbb {Z}}}^d\) such that C is generated as a cone by elements of L. By a further coordinate transformation, we pass to a \({{\mathbb {Z}}}\)-basis of L which (if C is full dimensional) is also a basis of the vector space \({{\mathbb {R}}}^d\). After this transformation, we can assume that \(L={{\mathbb {Z}}}^d\).
To sum up, we will assume that a cone \(C\subset {{\mathbb {R}}}^d\) is full dimensional and pointed. Under this assumption, \(C^*\) is pointed and full dimensional as well, and \(C\cong C^{**}\). Moreover, C and \(C^*\) are generated by their extreme rays.
The lattice of reference is \({{\mathbb {Z}}}^d\), should it be relevant. The lattice structure defines natural choices of generators for C and \(C^*\). Each extreme ray of C contains a unique integral point with coprime coordinates that we call an extreme integral generator of C. The extreme integral generators of \(C^*\) are called the support forms of C. This terminology is justified since the support forms \(\sigma _1,\dots ,\sigma _s\) of C define support hyperplanes \(H_i=\{x\in {{\mathbb {R}}}^d: \sigma _i(x)=0\}\) of C, and C is the irredundant intersection of the linear halfspaces \(H_i^+=\{x\in {{\mathbb {R}}}^d: \sigma _i(x)\ge 0\}\). The intersections \(C\cap H_i\) are the facets of C.
2.2 Polyhedra
By definition a polyhedron, \(P\subset {{\mathbb {R}}}^d\) is the intersection of finitely many affine halfspaces. Theoretically and computationally, one associates a cone \({{\mathcal {C}}}(P)\) with P, the cone over P, defined as the closure of the set \({{\mathbb {R}}}_+(P\times \{1\})\) in \({{\mathbb {R}}}^{d+1}\) if \(P\ne \emptyset \), and \({{\mathcal {C}}}(\emptyset )=\{0\}\). The dehomogenizing hyperplane is \({{\mathcal {H}}}(P)=\{x\in {{\mathbb {R}}}^{d+1}:x_{d+1}=1\}\).
The passage from P to \({{\mathcal {C}}}(P)\) is called homogenization. Normaliz uses the term dehomogenization for the linear form \(\delta \) which defines \({{\mathcal {H}}}(P)\) by \({{\mathcal {H}}}(P)=\{x\in {{\mathbb {R}}}^{d+1}:\delta (x)=1\}\). So far \(\delta (x)=x_{d+1}\), but for flexibility it is necessary to allow any nonzero \(\delta \in ({{\mathbb {R}}}^{d+1})^*\). Clearly, as soon as integrality comes into play, \(\delta \) must take integer values on \({{\mathbb {Z}}}^{d+1}\).
There is a second cone defined by P, its recession cone, namely \({\text {rec}}P=\{x\in {{\mathcal {C}}}(P): \delta (x) = 0 \}\). One has \({\text {rec}}P=\{0\}\) if and only if P is a polytope, i.e., a bounded polyhedron. The vectors in \(x\in {\text {rec}}P\) satisfy the condition that \(y+x\in P\) for all \(y\in P\). The condition is also necessary for x to be in \({\text {rec}}P\) if \(P\ne \emptyset \).
This allows us to compute automorphism groups and isomorphism types of polyhedra in terms of \({{\mathcal {C}}}(P)\): For the automorphism group, we select the automorphisms that map \({{\mathcal {H}}}(P)\) into itself, and for isomorphism types, the hyperplane \({{\mathcal {H}}}(P)\) must be encoded in the normal form.
The coordinate transformations mentioned above are applied to \({{\mathcal {C}}}(P)\) in order to reach the full dimension for \({{\mathcal {C}}}(P)\) and to pass to a pointed quotient. This includes the transformation of the dehomogenization \(\delta \) which need no longer be a coordinate function after the transformation.
3 Integral isomorphisms and automorphisms
3.1 Rational cones
A rational cone \(C\subset {{\mathbb {R}}}^d\) is generated by finitely many vectors with integral coordinates. The intersection \({\text {mon}}C=C\cap {{\mathbb {Z}}}^d\) is a finitely generated monoid by Gordan’s lemma. It has a unique minimal system of generators (if C is pointed), called the Hilbert basis. For all this, see [5]. A \({{\mathbb {Z}}}\)-isomorphism (or integral isomorphism) is represented by a matrix with entries in \({{\mathbb {Z}}}\) whose inverse has integral entries as well.
Theorem 1
Let C and D be cones in \({{\mathbb {R}}}^d\). Then, the following are equivalent for an \({{\mathbb {R}}}\)-automorphism \(\phi \) of \({{\mathbb {R}}}^d\):
-
(1)
\(\phi \) restricts to a \({{\mathbb {Z}}}\)-isomorphism of C and D;
-
(2)
\(\phi \) maps \({\text {Hilb}}C\) onto \({\text {Hilb}}D\);
-
(3)
\(\phi \) restricts to an isomorphism of the monoids \({\text {mon}}C\) and \({\text {mon}}D\).
In particular, there are only finitely many \({{\mathbb {Z}}}\)-isomorphisms of C and D.
Proof
A \({{\mathbb {Z}}}\)-isomorphism of C and D maps \({{\mathbb {Z}}}^d\) bijectively onto itself, and C bijectively onto D. Therefore, it maps \({\text {mon}}C\) bijectively onto \({\text {mon}}D\). Since \(\phi \) is additive, it is an isomorphism of the two monoids.
The Hilbert bases of C and D are uniquely determined by algebraic conditions on their elements: They consist of the irreducible elements in \({\text {mon}}C\) and \({\text {mon}}D\), respectively.
Both Hilbert bases generate \({{\mathbb {R}}}^d\) as a vector space. A linear endomorphism of \({{\mathbb {R}}}^d\) that contains a system of generators in its image is automatically bijective. Moreover, the cone generated by \({\text {Hilb}}C\) is mapped onto the cone generated by \({\text {Hilb}}D\).
The finiteness of the set of isomorphisms follows immediately from (3.2). \(\square \)
To simplify language, we will identify \(\phi \) with its pertaining restrictions in the situation of Theorem 1.
Corollary 2
With the notation of Theorem 1, the following are equivalent:
-
(1)
\(\phi \) is a \({{\mathbb {Z}}}\)-automorphism of C;
-
(2)
\(\phi \) maps \({\text {Hilb}}C\) onto itself;
-
(3)
\(\phi \) is an automorphism of the monoid \({\text {mon}}C\).
In particular, there are only finitely many \({{\mathbb {Z}}}\)-automorphisms of C.
The basic computational tasks are
-
(1)
deciding whether C and D are \({{\mathbb {Z}}}\)-isomorphic;
-
(2)
computing the group \({\text {Aut}}_{{\mathbb {Z}}}C\).
For these related tasks, it is useful to bring duality into play. Let \(\phi :V\rightarrow W\) be a linear map of vector spaces. The dual \(\phi ^*:W^*\rightarrow V^*\) of \(\phi \) is defined by \((\phi ^*(\lambda ))(x) = \lambda (\phi (x))\) for \(x\in V\), \(\lambda \in W^*\). Finite-dimensional vector spaces are reflexive: The bidual evaluation \(\langle \lambda , x\rangle = \lambda (x)\) for \(\lambda \in V^*\), \(x\in V\) induces a natural linear map \(V\rightarrow V^{**}\), which is a functorial isomorphism if V has finite dimension. In particular, one can identify \(\phi ^{**}\) and \(\phi \) if \(\phi \) is a homomorphism of finite-dimensional vector spaces. For isomorphisms \(\phi \), it is convenient to consider
Note that the pair \((\phi ,\phi ^\vee )\) preserves the bilinear evaluation of \({{\mathbb {R}}}^d\times ({{\mathbb {R}}}^d)^*\): For \(x\in {{\mathbb {R}}}^d\) and \(\lambda \in ({{\mathbb {R}}}^d)^*\), one has
All this carries over to finite-dimensional cones. Recall that the dual cone of the cone \(C\subset {{\mathbb {R}}}^d\) is
and that one can naturally identify C and \(C^{**}\). If \(\phi :C\rightarrow D\) is an isomorphism, then \(\phi ^\vee : C^*\rightarrow D^*\) is an isomorphism as well.
The following theorem can help in the computation of automorphism groups, as we will see below. The proof is easy and can be left to the reader.
Theorem 3
The map \(^\vee :{\text {Aut}}_{{\mathbb {Z}}}C \rightarrow {\text {Aut}}_{{\mathbb {Z}}}C^*\) is an isomorphism.
The decision whether cones C and D are isomorphic can be based on the comparison of normal forms. For the definition of the normal form, we use the support forms \(\sigma _1,\dots ,\sigma _s\) of C. They define the standard embedding of C: It is the map
At this point, we must break our simplifying assumptions: In general \(\epsilon _C(C)\) is not full dimensional, and its lattice of reference is \(\epsilon _C({{\mathbb {Z}}}^d)\). (In general, one has \(\epsilon _C({{\mathbb {Z}}}^d)\ne \epsilon _C(C)\cap {{\mathbb {Z}}}^s\). The quotient \({{\mathbb {Z}}}^s/\epsilon _C({{\mathbb {Z}}}^d)\) is the class group of \({\text {mon}}C\); see [5, 4.62].)
Theorem 4
The cones C and D in \({{\mathbb {R}}}^d\) are \({{\mathbb {Z}}}\)-isomorphic if and only if they have the same number s of facets, \(\epsilon _C(C)=\epsilon _D(D)\) and \(\epsilon _C({{\mathbb {Z}}}^d)=\epsilon _D({{\mathbb {Z}}}^d)\), up to a permutation of the coordinates of \({{\mathbb {R}}}^s\).
Proof
By construction, one has \({{\mathbb {Z}}}\)-automorphisms \(C\cong \epsilon _C(C)\) and \(D\cong \epsilon _D(D)\), which proves the implication \(\Longleftarrow \). For the converse implication, let \(\phi :C\rightarrow D\) be a \({{\mathbb {Z}}}\)-isomorphism. Then, \(\phi ^\vee (\sigma _1), \dots , \phi ^\vee (\sigma _s)\) are the support forms of D if \(\sigma _1,\dots \sigma _s\) are the support forms of C. This implies \(\epsilon _D(\phi (x))=\epsilon _C(x)\) for all \(x\in C\), including \(x\in {\text {mon}}C\) which is mapped isomorphically onto \({\text {mon}}D\). Hence, \(\epsilon _C(C)=\epsilon _D(D)\) and \(\epsilon _C({{\mathbb {Z}}}^d)= \epsilon _D({{\mathbb {Z}}}^d)\) (if we use the support forms for C and D in the given order). \(\square \)
The theorem justifies us in calling the pair \((\epsilon _C(C), \epsilon _C({{\mathbb {Z}}}^d))\) the \({{\mathbb {Z}}}\)-normal form of C. It can be computed in finitely many steps as we will now discuss.
Let \(x_1,\dots ,x_n\) be the Hilbert basis of C. Then, \(\epsilon _C(x_1),\dots ,\epsilon _C(x_n)\) generate \(\epsilon _C(C)\), and the matrix S given by
determines the isomorphism type of C, and the isomorphism type of C determines S up to the order of the rows and columns. By the canonical form of S, we denote the lexicographically greatest matrix that one can obtain by permutations of rows and columns from S where we compare matrices of the same format lexicographically as follows:
-
(1)
a row is lexicographically greater than another row if it is lexicographically greater under the comparison of coordinates from left to right;
-
(2)
a matrix is lexicographically greater than another matrix if it is lexicographically greater under the comparison of rows from top to bottom.
For this choice, the unit matrix is its own canonical form. We let
denote the canonical form of S.
Theorem 5
Let C and D be cones. Then, the following are equivalent:
-
(1)
C and D are \({{\mathbb {Z}}}\)-isomorphic;
-
(2)
\(C^*\) and \(D^*\) are \({{\mathbb {Z}}}\)-isomorphic;
-
(3)
\({\text {type}}_{{\mathbb {Z}}}C = {\text {type}}_{{\mathbb {Z}}}D\).
Despite the symmetry of the statements (1) and (2) in the theorem, the construction of \({\text {type}}_{{\mathbb {Z}}}C\) is not symmetric in C and \(C^*\): We use the Hilbert basis of C, but only the extreme integral generators of \(C^*\). In order to achieve symmetry, one could use \({\text {Hilb}}C^*\), but there is no need for this additional complication.
Our observations so far also allow us to identify the \({{\mathbb {Z}}}\)-automorphism group of C with a finite group of permutations of a purely combinatorial object. In the following, \({{\mathcal {S}}}_n\) denotes the permutation group of \(\{1,\dots ,n \}\).
Theorem 6
Let \(x_1,\dots ,x_n\) be the Hilbert basis of C and \(\sigma _1,\dots ,\sigma _s\) the support forms. Then, \({\text {Aut}}_{{\mathbb {Z}}}C\) can be identified with the group of permutations \(\Pi \in {{\mathcal {S}}}_n\) for which there exists a permutation \(\Sigma \in {{\mathcal {S}}}_s\) such that
This theorem reduces the computation of the isomorphism type and the \({{\mathbb {Z}}}\)-automorphism group of a cone C to finitely many steps. Suppose that C is defined by a system of generators. Then, we have to compute
-
(1)
the support forms of C,
-
(2)
\({\text {Hilb}}C\),
-
(3)
\({\text {type}}_{{\mathbb {Z}}}C\) as the canonical from of the matrix S, and/or
-
(4)
the group of permutations \(\Pi \) in Theorem 6.
Each of these tasks can be expensive, and the Hilbert basis is often the most critical step. Fortunately, there is a good chance to get away without it, and it must be avoided if \({\text {Aut}}_{{\mathbb {Z}}}C\) is to be exploited in the computation of \({\text {Hilb}}C\).
3.2 Using only the extreme rays
Let \(y_1,\dots ,y_m\) be the extreme integral generators of C. Instead of the full matrix S in (3.1), we can consider
It is a row selection of S since the extreme integral generators belong to the Hilbert basis. We denote its canonical form by
Proposition 7
Let C and D be cones in \({{\mathbb {R}}}^d\).
-
(1)
If C and D are \({{\mathbb {Z}}}\)-isomorphic, then \({\text {etype}}_{{\mathbb {Z}}}C = {\text {etype}}_{{\mathbb {Z}}}D\).
-
(2)
The converse holds if both the extreme integral generators of C and those of D, respectively, generate \({{\mathbb {Z}}}^d\).
-
(3)
The converse holds as well if both the support forms of C and those of D, respectively, generate \({{\mathbb {Z}}}^d\).
Proof
(1) is obvious. For (2), we let M be the monoid generated by the extreme integral generators of C and N the corresponding monoid for D. The detour via the standard embeddings shows that they are isomorphic monoids. The isomorphism extends both to an isomorphism of the cones they generate, namely C and D, as well as to an isomorphism of the groups generated by them, which is \({{\mathbb {Z}}}^d\) in both cases. By Theorem 1, the cones C and D are \({{\mathbb {Z}}}\)-isomorphic
Note that \({\text {etype}}_{{\mathbb {Z}}}C={\text {etype}}_{{\mathbb {Z}}}D\) implies \({\text {etype}}_{{\mathbb {Z}}}C^*={\text {etype}}_{{\mathbb {Z}}}D^*\) by transposition of matrices. Thus, \(C^*\) and \(D^*\) are \({{\mathbb {Z}}}\)-isomorphic by (2) and then C and D are \({{\mathbb {Z}}}\)-isomorphic by Theorem 5. This shows (3). \(\square \)
Corollary 8
Let \(y_1,\dots ,y_m\) be the extreme integral generators of C and \(\sigma _1,\dots ,\sigma _s\) its support forms. Suppose that \(y_1,\dots ,y_m\) or \(\sigma _1,\dots ,\sigma _s\) generate \({{\mathbb {Z}}}^r\). Then, \({\text {Aut}}_{{\mathbb {Z}}}C\) can be identified with the group of permutations \(\Pi \in {{\mathcal {S}}}_m\) for which there exists a permutation \(\Sigma \in {{\mathcal {S}}}_s\) such that
Remark 9
(a) Classical examples of cones C and D with \({\text {etype}}_{{\mathbb {Z}}}C={\text {etype}}_{{\mathbb {Z}}}D\), but \({\text {type}}_{{\mathbb {Z}}}C\ne {\text {type}}_{{\mathbb {Z}}}D\), can be derived from “empty” simplices in \({{\mathbb {R}}}^3\). These have been classified by White; see [5, 2.55]. As an explicit case, we take the cones C and D generated by the row vectors of the following two arrays:
In both cases, \({\text {etype}}_{{\mathbb {Z}}}\) is \(5E_4\) where \(E_4\) is the \(4\times 4\) unit matrix. But for C (on the left), the Hilbert basis elements have two pairs of equal values under the 4 support forms, whereas the Hilbert basis elements of D have values 1, 2, 3, 4 under the support forms. Moreover, \({\text {Aut}}_{{\mathbb {Z}}}C\) is the dihedral group \(D_4\) of order 8, whereas \({\text {Aut}}_{{\mathbb {Z}}}D\cong {{\mathbb {Z}}}_4\).
(b) The assumptions about C and \(C^*\) in Corollary 8 are not equivalent: It is possible that \(\sigma _1,\dots ,\sigma _s\) generate \({{\mathbb {Z}}}^r\), whereas \(y_1,\dots ,y_m\) fail to do this (or vice versa). As a simple example, one can take C with the extreme rays (0, 0, 1), (0, 1, 1), (2, 0, 1) and (2, 1, 1).
3.3 Another approach to normal forms and automorphism groups
There is another approach to isomorphism classes and automorphism groups introduced by Bremner et al. [1]. Let \(v_1,\dots ,v_n\) be vectors in \({{\mathbb {R}}}^d\) generating \({{\mathbb {R}}}^d\) as a vector space. For \(i=1,\dots ,n\), we form the symmetric \(d\times d\)-matrix given by
and set
It is not hard to see that Q defines a positively definite quadratic form on \({{\mathbb {R}}}^d\). Let \(R=Q^{-1}\), and set
where we consider vectors as \(d\times 1\)-matrices and T denotes transposition. By [1, Prop. 3.1], the automorphisms of \({{\mathbb {R}}}^d\) that permute \(v_1,\dots ,v_n\) correspond bijectively to the permutations of \(\Pi \in {{\mathcal {S}}}_n\) that satisfy
This approach can be applied to extreme integral generators or the Hilbert basis.
3.4 Graded cones
For enumerative tasks, one often has to consider cones with a grading, i.e., an integral linear form \(\gamma \) on \({{\mathbb {R}}}^d\) such that \(\gamma (x)>0\) for all \(x\in C\), \(x\ne 0\). Then, only isomorphisms or automorphisms are of interest that respect the grading. The matrices S and E in (3.1) and (3.3) get an extra column which is required to be left fix by passage to the canonical form of the matrix. In other words, it must be left fix by the column permutations in Corollaries 6 and 8.
If the computation of isomorphisms and automorphisms exchanges C and \(C^*\), then the extra columns become extra rows, presenting fixed points, to be left invariant in the computation of canonical forms or the permutation groups and the row permutations in Corollaries 6 and 8.
The grading is a special linear form on C and a special generator of \(C^*\).
3.5 Rational polyhedra
As pointed out in Sect. 2, computations for polyhedra \(P\subset {{\mathbb {R}}}^{d}\) are done in \({\text {cone}}(P)\subset {{\mathbb {R}}}^{d+1}\) and then restricted to the hyperplane \({{\mathcal {H}}}(P)\) on which the dehomogenization \(\delta \) has value 1. This principle is applied to isomorphisms and automorphisms as well: We must additionally require that the automorphisms and isomorphisms leave the hyperplane \({{\mathcal {H}}}(P)\) stable.
The dehomogenization is treated in the same way as the grading in Sect. 3.4: It is a special linear form on C and a special generator of \(C^*\).
Additionally, we may have a grading: An integral linear form on \({{\mathbb {R}}}^d\) defines a grading on the polyhedron P if it takes only positive values on the nonzero elements of \({\text {rec}}P\). If we want to compute isomorphisms or automorphisms of graded polyhedra, then we must work with two special linear forms or generators.
4 Other types of automorphisms
4.1 Rational and algebraic automorphisms
Let \(C\subset {{\mathbb {R}}}^d\) be a cone. The automorphism group of C, i.e., the group of all \({{\mathbb {R}}}\)-linear automorphisms of \({{\mathbb {R}}}C\) that map C onto itself, is not finite, unless \(C=0\). In fact, \({{\mathbb {R}}}_+\subset {\text {Aut}}_{{\mathbb {R}}}C\) in a natural way. This observation remains true if we replace \({{\mathbb {R}}}\) by a subfield K, such as \({{\mathbb {Q}}}\) or a real algebraic number field, and C by a cone generated by vectors with coordinates in K. In particular, \({\text {Aut}}_K C\) cannot be computed as a subgroup of a finite group of permutations. (For a discussion of the full group of automorphisms, we refer the reader to [1].)
There is no natural replacement of the extreme integral generators if discrete structures are not involved. However, if C is the cone over a polytope, then every extreme ray of C has a distinguished point, namely the vertex of the polytope that is contained in it. This allows us to compute the K-automorphisms of a polytope, provided we can compute in K, and this is the case if \(K={{\mathbb {Q}}}\) or K is a real algebraic number field. We mention algebraic number fields since Normaliz can compute in them.
4.2 Euclidean automorphisms
A Euclidean automorphism (or rigid motion) of a cone C is a distance preserving (necessarily linear) automorphism of \({{\mathbb {R}}}C\) that maps C onto itself. In this case, there is a distinguished set of points on the extreme rays, namely the points of Euclidean distance 1 from the origin: a Euclidean automorphism of C permutes them, and is uniquely determined by this permutation. But now a new difficulty arises: The points of distance 1 usually have coordinates outside \({{\mathbb {Q}}}\) or the given algebraic number field. One would have to adjoin a potentially large number of square roots in order to make the points of distance 1 defined over the field of reference.
Considering polytopes, we must be careful: A Euclidean motion of the hyperplane \({{\mathcal {H}}}(P)\), does in general not extend to a Euclidean automorphism of the cone over the polytope. But this is not an obstruction to computability: We must find all rational automorphisms of the polytope that preserve the norms
for the vertices \(v_1,\dots ,v_n\) of our polytope. In order to stay in the field of rational numbers or in an algebraic number field, it is better to use the squares: We search all permutations \(\Pi \in {{\mathcal {S}}}_n\) that satisfy
Note that the hyperplane of the polytope is automatically preserved if we permute the vertices of the polytope.
There is one critical aspect regarding coordinate transformations: They must preserve Euclidean distances if Euclidean automorphisms are to be computed. This cannot be guaranteed by Normaliz’ coordinate transformations. Therefore, Euclidean automorphism groups can only be computed if the input defines a polytope on the nose. The passage to a quotient makes no sense.
4.3 Combinatorial automorphisms
The combinatorial automorphisms of a polyhedron are the bijective maps of the set of faces to itself that preserve the partial order by inclusion. This is an abuse of terminology since combinatorial automorphisms of P need not be automorphisms of P. It is not hard to see that the combinatorial automorphisms of a polyhedron P can be identified with the combinatorial automorphisms of \({{\mathcal {C}}}(P)\) that restrict to combinatorial automorphisms of the recession cone and therefore permute the faces of the polyhedron.
Every face of a polyhedron is the intersection of the facets in which it is contained, and every face of a pointed cone is spanned by the extreme rays in it. Let \(x_1,\dots ,x_n\) be the extreme rays of C and \(F_1,\dots ,F_s\) its facets. Then, we set \(\delta _{ij}=1\) if \(x_i\in F_j\), and \(\delta _{ij}=0\) else. For the group of combinatorial automorphisms, we must find all permutations \(\Pi \in {{\mathcal {S}}}_n\) for which there exists a permutation \(\Sigma \in {{\mathcal {S}}}_s\) such that
with the additional requirement in the case of a polyhedron that the incidence of extreme rays with \({{\mathcal {H}}}(P)\) is preserved by \(\Pi \). (It makes no sense for combinatorial automorphisms to respect the grading.)
4.4 Non-intrinsically defined automorphisms
It is often desirable to compute an automorphism group, or at least a subgroup, from partial information about the cone or polyhedron, namely using only the defining data. Usually, these are extreme rays or, dually, support forms of the cone (over the polyhedron), potentially augmented by a grading. Normaliz therefore has a computation goal “input automorphisms.” These are rational automorphisms preserving the set of generators, and additionally the grading, the dehomogenization or both. Before computing the input automorphisms, Normaliz prepares the input data as far as possible without the dualization of the cone. Then, we are exactly in the situation of Sect. 3.3. With notation introduced there, we must find all permutations of the input vectors \(v_1,\dots ,v_n\) that satisfy the condition
where \(w_{ij}= v_i^TRv_j\).
An even coarser type is presented by “ambient automorphisms,” namely coordinate permutations of the ambient space that preserve the input data. Suppose that C is defined by vectors \(v_1,\dots ,v_n\in {{\mathbb {R}}}^d\). Then, we search all coordinate permutations \(\Pi \in {{\mathcal {S}}}_n\) for which there is a permutation \(\Sigma \in {{\mathcal {S}}}_d\) such that
Additionally, we require that the dehomogenization or the grading or both are preserved.
Let G be the group of ambient automorphisms. The elements of G induce integral as well as Euclidean automorphisms of the cone or polyhedron, but in general the natural map from G to the group \({\text {Aut}}_{{\mathbb {Z}}}C\) is not surjective, and even injectivity is not guaranteed.
5 Implementation in Normaliz
The automorphism groups that can be computed by Normaliz are realized as permutation groups. There are two types:
-
(1)
pairs of permutations of vectors and linear forms preserving the evaluation of the canonical bilinear form on \({{\mathbb {R}}}^d\times ({{\mathbb {R}}}^d)^*\), as in (3.2), (3.4), (4.2), (4.4);
-
(2)
permutations of vectors preserving the evaluation of a symmetric bilinear form on \({{\mathbb {R}}}^d\), as in (3.6), (4.1), (4.3).
Both problems can be considered as the computation of the automorphism group of a weighted graph:
-
(1)
For (1), we choose the complete bipartite graph whose vertices are presented by the vectors in the first partition and the linear forms in the second. The weight associated with the edge connecting a vector v and a linear form \(\lambda \) is \(\lambda (v)\).
-
(2)
For (2), we choose the complete graph whose vertices are presented by the vectors, augmented by edges connecting a vertex to itself. The weight of the edge connecting vectors v and w is \(\beta (v,w)\) where \(\beta \) denotes the symmetric bilinear form.
The package |nauty| by McKay and Piperno computes automorphism groups and canonical forms of undirected graphs. For the application to more general weighted graphs, these are replaced by a tower of graphs with weights 0 and 1 only. The encoding is described in the nauty manual.
The “raw” weights \(\lambda (v)\) and \(\beta (v,w)\) above can be very large numbers. This is often true for the evaluation of the bilinear form defined by the matrix R appearing in (3.5). Therefore, it is better to sort the weights first and to replace each weight by its index in the sorting order, keeping the sorted weights in an extra vector.
nauty allows the subdivision of the vertices of the graph into partitions left stable under the permutations that represent the automorphisms. This subdivision is not only necessary to separate the layers in the tower, but also for our bipartite graphs, and the special linear forms and vectors that must be accommodated as well. Each of the latter constitutes a partition in every layer so that they are fixed by the automorphisms.
nauty not only computes the automorphism group as a permutation group, but also returns the orbits of the vertices of the graph that we can interpret as permutations of vectors and/or linear forms, for example, as permutations of extreme integral generators and support forms. Another important result is the canonical order of the vertices, on which we can base the computation of isomorphism types.
The computation goals of Normaliz are selected by options in the input file or on the command line. The goal |Automorphisms| asks for integral automorphisms if the input is defined over the rational numbers and for algebraic automorphisms in the case of real algebraic number fields. All other types of automorphism groups are named exactly as in this note.
Only the computation of integral automorphisms may require several attempts. Normaliz first tries the computation based only on the extreme rays or the support forms, choosing the smaller cardinality. The matrices of the generators of the automorphism group are then checked for being defined over \({{\mathbb {Z}}}\) and having determinant \(\pm 1\). If this is not the case, the other set of “generators” is used, and if this fails as well, then the Hilbert basis is computed.
6 Two classical examples
We illustrate the computational potential of Normaliz by two classical examples, the icosahedron and the linear-ordering polytope.
6.1 The icosahedron
The icosahedron is one of the Platonic solids, a regular polytope of dimension 3 defined over \({{\mathbb {Q}}}[\sqrt{5}]\), with 12 vertices and 20 facets. We compute the Euclidean automorphisms and get the following output:
![figure a](http://media.springernature.com/lw685/springer-static/image/art%3A10.1007%2Fs40687-022-00317-3/MediaObjects/40687_2022_317_Figa_HTML.png)
The permutations represent a system of generators of the automorphism group. It is easy to see that the group of combinatorial automorphisms cannot have order \(>120\). Therefore, all intrinsically defined automorphism groups of this classical polyhedron have the same order 120.
The 120-cell and the 600-cell, regular polytopes of dimension 4 and both defined over \({{\mathbb {Q}}}[\sqrt{5}]\), have the Coxeter group \(H_4\) as their Euclidean automorphism group, and at least the order 14, 400 can be verified by Normaliz.
6.2 The linear-ordering polytope
Let \(I=\{1,\dots ,n\}\), \(n\ge 3\). (The case \(n=2\) is trivial and special.) A relation R on I is a subset of \(I\times I\), and R can be encoded by its incidence vector: It is a 0-1-vector \(\iota _R\) whose components are labeled by the elements (x, y) of \(I\times I\), and \(\iota _R(x,y)=1\) if \((x,y)\in R\) and \(\iota _R(x,y)=0\) else. The linear-ordering polytope \({\text {LO}}_n\) is the convex hull of the incidence vectors of the linear (or total) orders on I. It has been explored extensively; for example, see the book [12] by Martí and Reinelt.
The group \({{\mathcal {S}}}_n\) of permutations of I acts on the set of all incidence vectors by relabeling: \(\iota _{\pi (R)}(x,y)=\iota _R(\pi (x),\pi (y))\). This action is a permutation of coordinates that restricts to the linear-ordering polytope. There is a further permutation of coordinates with this property, the duality: \(\iota _{R^\vee }(x,y) = \iota _R(y,x)\). Evidently dualization is different from all relabelings and commutes with them. Therefore, \({\text {Aut}}_{{\mathbb {Z}}}{\text {LO}}_n\) contains a copy of \({{\mathbb {Z}}}_2\times {{\mathcal {S}}}_n\). All these automorphisms are Euclidean as well.
Expecting that \({{\mathbb {Z}}}_2\times {{\mathcal {S}}}_6\) is the full group of automorphisms of \({\text {LO}}_6\), we apply Normaliz to it—and get a surprising result: The group of integral automorphisms has order \(10,080 = 2|{{\mathcal {S}}}_{7}|\). It does not change if “integral” is replaced by the more general “rational” or “combinatorial.” But if we replace it by “Euclidean,” then the order goes down to \(1,440 = 2|{{\mathcal {S}}}_6|\), and the computation confirms that above we have found all Euclidean automorphisms of \({\text {LO}}_6\). Computations for \(n=3, 4, 5, 7\) show the same pattern.
It is actually known that the group of combinatorial automorphisms of \({\text {LO}}_n\) is isomorphic to \({{\mathbb {Z}}}_2\times {{\mathcal {S}}}_{n+1}\). See Fiorini [8]. We complement this result by proving that \({{\mathbb {Z}}}_2\times {{\mathcal {S}}}_n\) is the Euclidean automorphism group. To this end, we must understand the action of \({{\mathbb {Z}}}_2\times {{\mathcal {S}}}_{n+1}\) on \({\text {LO}}_n\). We follow Katthän [9], using his conventions and notation.
The first step is a change of the ambient space: An order relation R is completely determined by the pairs \((x,y)\in R\), \(x<y\). The corresponding orthogonal projection of \({{\mathbb {R}}}^{n^2}\) to \({{\mathbb {R}}}^{\left( {\begin{array}{c}n\\ 2\end{array}}\right) }\) maps the linear-ordering polytope to an integrally isomorphic copy, and even the Euclidean structure remains unchanged: All distances between vertices change by the factor \(1/\sqrt{2}\). We identify \({\text {LO}}_n\) with its projection to \({{\mathbb {R}}}^{\left( {\begin{array}{c}n\\ 2\end{array}}\right) }\). It is easy to check that the vertices of \({\text {LO}}_n\) generate the full lattice \({{\mathbb {Z}}}^{\left( {\begin{array}{c}n\\ 2\end{array}}\right) }\), as an affine lattice as well as a subgroup of \({{\mathbb {Z}}}^{\left( {\begin{array}{c}n\\ 2\end{array}}\right) }\).
To make relabeling and dualization linear—so far they are only affine linear—we apply the affine linear bijective map
where \({\mathbf {1}}\) is the vector with all coordinates equal to 1. Moreover, we set \({\tilde{{\text {LO}}}}_n=\Psi ({\text {LO}}_n)\).
Lemma 10
Let \(\phi \) be a map of \({{\mathbb {R}}}^{\left( {\begin{array}{c}n\\ 2\end{array}}\right) }\) to itself, and set \({\tilde{\phi }}=\Psi \phi \Psi ^{-1}\).
-
(1)
\(\phi \) is a Euclidean automorphism of \({\text {LO}}_n\) if and only if \({\tilde{\phi }}\) is a Euclidean automorphism of \({\tilde{{\text {LO}}}}_n\).
-
(2)
\(\phi ({\mathbf {1}}) = {\mathbf {1}}\iff {\tilde{\phi }}({\mathbf {1}})={\mathbf {1}}\).
-
(3)
Suppose that \({\tilde{\phi }}\) is a Euclidean automorphism of \({\tilde{{\text {LO}}}}_n\) with \({\tilde{\phi }}({\mathbf {1}})={\mathbf {1}}\). Then, \({\tilde{\phi }}\) permutes the unit vectors in \({{\mathbb {R}}}^{\left( {\begin{array}{c}n\\ 2\end{array}}\right) }\).
Proof
(1) and (2) are obvious. For (3), we start from \({\tilde{\phi }}\) and set \(\phi =\Psi ^{-1}{\tilde{\phi }}=\Psi \). Then, \(\phi \) is a Euclidean automorphism of \({\text {LO}}_n\) with \(\phi ({\mathbf {1}})={\mathbf {1}}\) by (1) and (2). Moreover, \(\phi (0)=0\) since 0 is the uniquely determined vertex of \({\text {LO}}_n\) with maximum distance from \({\mathbf {1}}\). Hence, \(\phi \) is linear (and not only affine linear). Clearly, \(\phi \) extends to a Euclidean automorphism of \({{\mathbb {R}}}^{\left( {\begin{array}{c}n\\ 2\end{array}}\right) }\), and it is integral because the vertices of \({\text {LO}}_n\) generate the lattice \({{\mathbb {Z}}}^{\left( {\begin{array}{c}n\\ 2\end{array}}\right) }\). An integral Euclidean automorphism permutes the unit vectors up to sign, and if it fixes \({\mathbf {1}}\), it must permute the unit vectors themselves. That also \({\tilde{\phi }}\) permutes the unit vectors is now an easy computation. \(\square \)
The next transition is from orderings to permutations. For \(\pi \in {{\mathcal {S}}}_n\), we define the relation \(R_\pi \) by \((x,y)\in R_\pi \) if and only if \(\pi (x)>\pi (y)\). It follows that the polytope \({\tilde{{\text {LO}}}}_n\) spanned by the vectors
where
Setting \({\tilde{k}}_{ij}=-{\tilde{k}}_{ij}\) for \(i>j\) yields an easy description of relabeling by a permutation \(\sigma \in {{\mathcal {S}}}_n\): It amounts to the transformation
Dualization is multiplication by \(-1\).
Relabeling makes \({{\mathcal {S}}}_n\) act on the vector subspace W of the space of real-valued functions on \({{\mathcal {S}}}_n\) generated by the functions \({\tilde{k}}_{ij}\). Katthän’s crucial insight is to identify W (which is \({\tilde{U}}_{Inv}\) in [9]) with the second exterior power \(\bigwedge ^2 V\) of \(V={{\mathbb {R}}}^n\) and to observe that W and \(\bigwedge ^2 V\) are isomorphic representations of the group \({{\mathcal {S}}}_n\) if we let \({{\mathcal {S}}}_n\) act on V by the relabeling of the unit vectors, \(\sigma (e_i)=e_{\sigma (i)}\), and extend this action to \(\bigwedge ^2 V\) in the natural way. Under the action of \({{\mathcal {S}}}_n\), the vector space V is not irreducible: It has a 1-dimensional subspace of invariants spanned by \(e_1+\dots +e_n\). The complementary \({{\mathcal {S}}}_n\)-subspace is the orthogonal complement of the subspace of invariants since the action of \({{\mathcal {S}}}_n\) preserves the standard scalar product. In it, we choose the basis \(e_i-e_n\), \(i=1,\dots ,n-1\). The splitting of V induces a splitting of \(\bigwedge ^2 V\) into two summands, one of which has the basis \((e_i-e_n)\wedge (e_j-e_n)=e_i\wedge e_j - e_i\wedge e_n + e_j\wedge e_n\), \(1\le i< j< n\). The transfer to W shows that the subspace generated by the functions
is closed under relabeling. (And it is obviously closed under dualization.)
Let \(P'\) be the polytope spanned by the vectors
One checks that \({\tilde{w}}_{ij}(\zeta \pi ) = {\tilde{w}}_{ij}(\pi )\) for the cyclic permutation \(\zeta \), \(\zeta (k) = k+1 \mod n\). Since \(\zeta ^m\pi (n)=n\) for suitable m and the subgroup of \({{\mathcal {S}}}_n\) formed by the permutation fixing n can be identified with \({{\mathcal {S}}}_{n-1}\), one gets the desired identification of \(P'\) with \({\tilde{{\text {LO}}}}_{n-1}\) plus a description of the action of \({{\mathcal {S}}}_n\) on \({\tilde{{\text {LO}}}}_{n-1}\).
Theorem 11
For all \(n\ge 3\), the group of Euclidean automorphisms of \({\tilde{{\text {LO}}}}_n\) is \({{\mathbb {Z}}}_2\times {{\mathcal {S}}}_n\) acting by relabeling and dualization.
Proof
We know already that \({{\mathbb {Z}}}_2\times {{\mathcal {S}}}_n\) acts by Euclidean automorphisms. Assume that \(\phi \in {{\mathbb {Z}}}_2\times {{\mathcal {S}}}_{n+1}\) with \(\phi \notin {{\mathbb {Z}}}_2\times {{\mathcal {S}}}_n\), does this as well. Since dualization is the point reflection at the midpoint of \({\text {LO}}_n\), we can assume \(\phi \in {{\mathcal {S}}}_{n+1}{\setminus } {{\mathcal {S}}}_n\). Since \({{\mathcal {S}}}_n\) acts transitively on the vertices of \({\text {LO}}_n\), we can even assume that \(\phi ({\mathbf {1}})={\mathbf {1}}\). By Lemma 10, we pass to \({\tilde{{\text {LO}}}}_n\) and get an automorphism if \({\tilde{{\text {LO}}}}_n\) that permutes the unit vectors, equivalently, the coordinates, in \({{\mathbb {R}}}^{\left( {\begin{array}{c}n\\ 2\end{array}}\right) }\).
Now, \({\tilde{{\text {LO}}}}_n\) can be identified with \(P'\) above after replacing n by \(n-1\). Our assumption on \(\phi \) is \(\phi (n)\ne n\). Since \(n\ge 4\), we find i, j with \(1\le i<j < n\) and \(\phi (i),\phi (j)< n\). Relabeling by \(\phi \) does not transform \({\tilde{w}}_{ij}\) into another coordinate function \({\tilde{w}}_{uv}\). This is a contradiction. \(\square \)
One can use Normaliz to explore further properties of the polytopes \({\text {LO}}_n\) for \(n\le 7\). The volumes of these polytopes can be computed by the descent algorithm with the exploitation of isomorphism types of faces. For \(n\le 6\), the Ehrhart series is computable as well. It is not known whether all linear-order polytopes are normal in the sense of [5]. Normaliz confirms normality rather quickly for \(n\le 6\). A brute force application of Normaliz in [10] has verified it for \(n=7\) as well. One of the next releases of Normaliz will exploit the action of the automorphism group for this computation and accelerate it.
The facets of \({\text {LO}}_n\) are known only for \(n\le 7\). (For \(n=8\), one has a lower bound of their number and of the number of orbits.) Normaliz can determine them, including their orbits under the actions of \({{\mathbb {Z}}}_2\times {{\mathcal {S}}}_{n+1}\) and \({{\mathbb {Z}}}_2\times {{\mathcal {S}}}_n\). For \(n=7\), the computation confirms (and is confirmed by) Tables 6.1 and 6.2 in [12]. The \({{\mathbb {Z}}}_2\times {{\mathcal {S}}}_{n+1}\)-orbits are called “\(P_{{\text {LO}}}^n \)-classes” in [12]. Table 6.1 shows the 19 \({{\mathbb {Z}}}_2\times {{\mathcal {S}}}_n\)-orbits for \(n=7\), of which 8 decompose into 2 \({{\mathcal {S}}}_n\)-orbits.
References
Bremner, D., Sikirić, M.D., Pasechnik, D.V., Rehn, T., Schürmann, A.: Computing symmetry groups of polyhedra. LMS J. Comput. Math. 17, 565–581 (2014)
Bruns, W.: On the integral Carathéodory property. Exp. Math. 16, 359–365 (2007)
Bruns, W.: ToricExp: experiments in toric geometry. https://www.home.uni-osnabrueck.de/wbruns/ToricExp/index.html
Bruns, W., Garcí-a-Sánchez, P., O’Neill, C.: Wilf’s conjecture in fixed multiplicity. Int. J. Algebra Comput. 30, 861–882 (2020)
Bruns, W., Gubeladze, J.: Polytopes, Rings and K-theory. Springer, Berlin (2009)
Bruns, W., Ichim, B.: Polytope volume by descent in the face lattice and applications in social choice. Math. Program. Comput. 13, 415–442 (2021)
Bruns, W., Ichim, B., Söger, C. von der Ohe, U.: Normaliz. Algorithms for rational cones and affine monoids. https://normaliz.uos.de
Fiorini, S.: Determining the automorphism group of the linear ordering polytope. Discrete Appl. Math. 112, 121–128 (2001)
Katthän, L.: The linear ordering polytope via representations. Preprint arXiv:1109.5040
Kohl, F., Rauh, Y., Li, J., Yoshida, R.: Semigroups—a computational approach. In: The 50th Anniversary of Gröbner Bases, Adv. Stud. Pure Math., vol. 77, pp. 155–170. Math. Soc. Japan, Tokyo (2018)
McKay, B.D., Piperno, A.: Practical graph isomorphism, II. J. Symb. Comput. 60, 94–112 (2014)
Martí, R., Reinelt, G.: The Linear Ordering Problem. Exact and Heuristic Methods in Combinatorial Optimization. Springer, Berlin (2011)
Acknowledgements
We are grateful to Takayuki Hibi with whom the first ideas toward this note were discussed. Our thanks go to Lukas Katthan for providing the reference and for critically reading this note. The use of nauty in Normaliz would not have been possible without an intensive consultation of Brendan McKay.
Funding
Open Access funding enabled and organized by Projekt DEAL.
Author information
Authors and Affiliations
Corresponding author
Additional information
In honor of Jürgen Herzog on the occasion of his 80th Birthday.
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article’s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/.
About this article
Cite this article
Bruns, W. Automorphism groups and normal forms in Normaliz. Res Math Sci 9, 20 (2022). https://doi.org/10.1007/s40687-022-00317-3
Received:
Accepted:
Published:
DOI: https://doi.org/10.1007/s40687-022-00317-3