A Direct Encoding for NNC Polyhedra
 2 Citations
 7k Downloads
Abstract
We present an alternative Double Description representation for the domain of NNC (not necessarily closed) polyhedra, together with the corresponding Chernikovalike conversion procedure. The representation uses no slack variable at all and provides a solution to a few technical issues caused by the encoding of an NNC polyhedron as a closed polyhedron in a higher dimension space. A preliminary experimental evaluation shows that the new conversion algorithm is able to achieve significant efficiency improvements.
1 Introduction
The Double Description (DD) method [28] allows for the representation and manipulation of convex polyhedra by using two different geometric representations: one based on a finite collection of constraints, the other based on a finite collection of generators. Starting from any one of these representations, the other can be derived by application of a conversion procedure [10, 11, 12], thereby obtaining a DD pair. The procedure is incremental, capitalizing on the work already done when new constraints and/or generators need to be added to an input DD pair.
The DD method lies at the foundation of many software libraries and tools^{1} which are used, either directly or indirectly, in research fields as diverse as bioinformatics [31, 32], computational geometry [1, 2], analysis of analog and hybrid systems [8, 18, 22, 23], automatic parallelization [6, 29], scheduling [16], static analysis of software [4, 13, 15, 17, 21, 24].
In the classical setting, the DD method is meant to compute geometric representations for topologically closed polyhedra in an ndimensional vector space. However, there are applications requiring the ability to also deal with linear strict inequality constraints, leading to the definition of not necessarily closed (NNC) polyhedra. For example, this is the case for some of the analysis tools developed for the verification of hybrid systems [8, 18, 22, 23], static analysis tools such as Pagai [24], and tools for the automatic discovery of ranking functions [13].
The few DD method implementations providing support for NNC polyhedra (Apron and PPL) are all based on an indirect representation. The approach, proposed in [22, 23] and studied in more detail in [3, 5], encodes the strict inequality constraints by means of an additional space dimension, playing the role of a slack variable; the new space dimension, usually denoted as \(\epsilon \), needs to be nonnegative and bounded from above, i.e., the constraints \(0 \le \epsilon \le 1\) are added to the topologically closed representation \(\mathcal {R}\) (called \(\epsilon \)representation) of the NNC polyhedron \(\mathcal {P}\). The main advantage of this approach is the possibility of reusing, almost unchanged, all of the wellstudied algorithms and optimizations that have been developed for the classical case of closed polyhedra. However, the addition of a slack variable carries with itself a few technical issues.

At the implementation level, more work is needed to make the \(\epsilon \) dimension transparent to the end user.

The \(\epsilon \)representation causes an intrinsic overhead: in any generator system for an \(\epsilon \)polyhedron, most of the “proper” points (those having a positive \(\epsilon \) coordinate) need to be paired with the corresponding “closure” point (having a zero \(\epsilon \) coordinate), almost doubling the number of generators.

The DD pair in minimal form computed for an \(\epsilon \)representation \(\mathcal {R}\), when reinterpreted as encoding the NNC polyhedron \(\mathcal {P}\), typically includes many redundant constraints and/or generators, leading to inefficiencies. To avoid this problem, strong minimization procedures were defined in [3, 5] that are able to detect and remove those redundancies. Even though effective, these procedures are not fully integrated into the DD conversion: they can only be applied after the conversion, since they interfere with incrementality. Hence, during the iterations of the conversion the \(\epsilon \)redundancies are not removed, causing the computation of bigger intermediate results.
In this paper, we pursue a different approach for the handling of NNC polyhedra in the DD method. Namely, we specify a direct representation, dispensing with the need of the slack variable. The main insight of this new approach is the separation of the (constraints or generators) geometric representation into two components, the skeleton and the nonskeleton of the representation, playing quite different roles: while keeping a geometric encoding for the skeleton component, we will adopt a combinatorial encoding for the nonskeleton one. For this new representation, we propose the corresponding variant of the Chernikova’s conversion procedure, where both components are handled by respective processing phases, so as to take advantage of their peculiarities. In particular, we develop ad hoc functions and procedures for the combinatorial nonskeleton part.
The new representation and conversion procedure, in principle, can be integrated into any of the available implementations of the DD method. Our experimental evaluation is conducted in the context of the PPL and shows that the new algorithm, while computing the correct results for all of the considered tests, achieves impressive efficiency improvements with respect to the implementation based on the slack variable.
The paper is structured as follows. Section 2 briefly introduces the required notation, terminology and background concepts. Section 3 proposes the new representation for NNC polyhedra; the proofs of the stated results are in [7]. The extension of the Chernikova’s conversion algorithm to this new representation is presented in Sect. 4. Section 5 reports the results obtained by the experimental evaluation. We conclude in Sect. 6.
2 Preliminaries
We assume some familiarity with the basic notions of lattice theory [9]. For a lattice \(\langle L, \sqsubseteq , \bot , \top , \sqcap , \sqcup \rangle \), an element \(a \in L\) is an atom if \(\bot \sqsubset a\) and there exists no element \(b \in L\) such that \(\bot \sqsubset b \sqsubset a\). For \(S \subseteq L\), the upward closure of S is defined as \( \mathop {\uparrow }\nolimits S \mathrel {\buildrel \mathrm {def} \over {=}}\{\, x \in L \mid \exists s \in S \mathrel {.}s \sqsubseteq x \,\} \). The set \(S \subseteq L\) is upward closed if \(S = \mathop {\uparrow }\nolimits S\); we denote by \(\mathop {\wp _{\uparrow }}\nolimits (L)\) the set of all the upward closed subsets of L. For \(x \in L\), \(\mathop {\uparrow }\nolimits x\) is a shorthand for \(\mathop {\uparrow }\nolimits \{x \}\). The notation for downward closure is similar. Given two posets \(\langle L, \sqsubseteq \rangle \) and \(\langle L^\sharp , \sqsubseteq ^\sharp \rangle \) and two monotonic functions Open image in new window and Open image in new window , the pair \((\alpha , \gamma )\) is a Galois connection [14] between L and \(L^\sharp \) if \( \forall x \in L, x^\sharp \in L^\sharp \mathrel {:}\alpha (x) \sqsubseteq ^\sharp x^\sharp \Leftrightarrow x \sqsubseteq \gamma (x^\sharp ) \).
The DD method due to Motzkin et al. [28] allows combining the constraints and the generators of a polyhedron \(\mathcal {P}\) into a DD pair \((\mathcal {C}, \mathcal {G})\): a conversion procedure [10, 11, 12] is used to obtain each description starting from the other one, also removing the redundant elements. For presentation purposes, we focus on the conversion from constraints to generators; the opposite conversion works in the same way, using duality to switch the roles of constraints and generators. We do not describe lower level details such as the homogenization process, mapping the polyhedron into a polyhedral cone, or the simplification step, needed for computing DD pairs in minimal form.
The set \(\mathbb {CP}_n\) of all closed polyhedra on the vector space \(\mathbb {R}^n\), partially ordered by set inclusion, is a lattice Open image in new window , where the empty set and \(\mathbb {R}^n\) are the bottom and top elements, the binary meet operator is set intersection and the binary join operator ‘ Open image in new window ’ is the convex polyhedral hull. A constraint \(\beta = (\varvec{a}^{\scriptscriptstyle \mathrm {T}}\varvec{x} \mathrel {\bowtie }b)\) is said to be valid for \(\mathcal {P}\in \mathbb {CP}_n\) if all the points in \(\mathcal {P}\) satisfy \(\beta \); for each such \(\beta \), the subset \( F = \{\, \varvec{p} \in \mathcal {P}\mid \varvec{a}^{\scriptscriptstyle \mathrm {T}}\varvec{p} = b \,\} \) is a face of \(\mathcal {P}\). We write \( cFaces _{\mathcal {P}}\) (possibly omitting the subscript) to denote the finite set of faces of \(\mathcal {P}\in \mathbb {CP}_n\). This is a meet sublattice of \(\mathbb {CP}_n\) and \( \mathcal {P}= \bigcup \bigl \{\, \mathop {\mathrm {relint}}\nolimits (F) \bigm  F \in cFaces _\mathcal {P}\,\bigr \} \).
3 Direct Representations for NNC Polyhedra
An NNC polyhedron can be described by using an extended constraint system Open image in new window and/or an extended generator system \(\mathcal {G}= \langle L, R, C, P \rangle \). These representations are said to be geometric, meaning that they provide a precise description of the position of their elements. For a closed polyhedron \(\mathcal {P}\in \mathbb {CP}_n\), the use of completely geometric representations is an adequate choice. In the case of an NNC polyhedron \(\mathcal {P}\in \mathbb {P}_n\) such a choice is questionable, since the precise geometric position of some of the elements is not really needed.
Example 1
Consider the NNC polyhedron \(\mathcal {P}\in \mathbb {P}_2\) in the next figure, where the (strict) inequality constraints are denoted by (dashed) lines and the (closure) points are denoted by (unfilled) circles.
\(\mathcal {P}\) is described by \(\mathcal {G}= \langle L, R, C, P \rangle \), where \(L = R = \emptyset \), \(C = \{c_0, c_1, c_2 \}\) and \(P = \{p_0, p_1 \}\). However, there is no need to know the position of point \(p_1\), since it can be replaced by any other point on the open segment \((c_0, c_1)\). Similarly, when considering the constraint representation, there is no need to know the exact slope of the strict inequality constraint \(\beta \).
We now show that \(\mathcal {P}\in \mathbb {P}_n\) can be more appropriately represented by integrating a geometric description of \(\mathcal {Q}= \mathop {\mathrm {cl}}\nolimits (\mathcal {P}) \in \mathbb {CP}_n\) (the skeleton) with a combinatorial description of \( nncFaces _\mathcal {P}\) (the nonskeleton). We consider here the generator system representation; the extension to constraints will be briefly outlined in a later section.
Definition 1
(Skeleton of a generator system). Let \(\mathcal {G}= \langle L, R, C, P \rangle \) be a generator system in minimal form, \(\mathcal {P}= \mathop {\mathrm {gen}}\nolimits (\mathcal {G})\) and \(\mathcal {Q}= \mathop {\mathrm {cl}}\nolimits (\mathcal {P})\). The skeleton of \(\mathcal {G}\) is \( \mathcal {SK}_\mathcal {Q}= \mathop {\mathrm {skel}}\nolimits (\mathcal {G}) \mathrel {\buildrel \mathrm {def} \over {=}}\langle L, R, C \mathrel {\cup } SP , \emptyset \rangle \), where \( SP \subseteq P\) holds the points that can not be obtained by combining the other generators in \(\mathcal {G}\).
Note that the skeleton has no points at all, so that \(\mathop {\mathrm {gen}}\nolimits (\mathcal {SK}_\mathcal {Q}) = \emptyset \). However, we can define a variant function \( \mathop {\overline{\mathrm {gen}}}\nolimits \bigl ( \langle L, R, C, P \rangle \bigr ) \mathrel {\buildrel \mathrm {def} \over {=}}\mathop {\mathrm {gen}}\nolimits \bigl ( \langle L, R, \emptyset , C \mathrel {\cup }P \rangle \bigr ) \), showing that the skeleton of an NNC polyhedron provides a nonredundant representation of its topological closure.
Proposition 1
If \(\mathcal {P}= \mathop {\mathrm {gen}}\nolimits (\mathcal {G})\) and \(\mathcal {Q}= \mathop {\mathrm {cl}}\nolimits (\mathcal {P})\), then \( \mathop {\overline{\mathrm {gen}}}\nolimits (\mathcal {G}) = \mathop {\overline{\mathrm {gen}}}\nolimits (\mathcal {SK}_\mathcal {Q}) = \mathcal {Q}\). Also, there does not exist \(\mathcal {G}' \subset \mathcal {SK}_\mathcal {Q}\) such that \(\mathop {\overline{\mathrm {gen}}}\nolimits (\mathcal {G}') = \mathcal {Q}\).
The elements of \( SP \subseteq P\) are called skeleton points; the nonskeleton points in \(P \setminus SP \) are redundant when representing the topological closure; these nonskeleton points are the elements in \(\mathcal {G}\) that need not be represented geometrically.
Consider a point \(\varvec{p} \in \mathcal {Q}= \mathop {\mathrm {cl}}\nolimits (\mathcal {P})\) (not necessarily in P). There exists a single face \(F \in cFaces _{\mathcal {Q}}\) such that \(\varvec{p} \in \mathop {\mathrm {relint}}\nolimits (F)\). By definition of function ‘\(\mathop {\mathrm {gen}}\nolimits \)’, point \(\varvec{p}\) behaves as a filler for \(\mathop {\mathrm {relint}}\nolimits (F)\) meaning that, when combined with the skeleton, it generates \(\mathop {\mathrm {relint}}\nolimits (F)\). Note that \(\varvec{p}\) also behaves as a filler for the relative interiors of all the faces in the set \(\mathop {\uparrow }\nolimits F\). The choice of \(\varvec{p} \in \mathop {\mathrm {relint}}\nolimits (F)\) is actually arbitrary: any other point of \(\mathop {\mathrm {relint}}\nolimits (F)\) would be equivalent as a filler. A less arbitrary representation for \(\mathop {\mathrm {relint}}\nolimits (F)\) is thus provided by its own skeleton \(\mathcal {SK}_F \subseteq \mathcal {SK}_{\mathcal {Q}}\); we say that \(\mathcal {SK}_F\) is the support for the points in \(\mathop {\mathrm {relint}}\nolimits (F)\) and that any point \(\varvec{p}' \in \mathop {\mathrm {relint}}\nolimits \bigl (\mathop {\overline{\mathrm {gen}}}\nolimits (\mathcal {SK}_F)\bigr ) = \mathop {\mathrm {relint}}\nolimits (F)\) is a materialization of \(\mathcal {SK}_F\).
In the following we will sometimes omit subscripts when clear from context.
Definition 2
(Support sets for a skeleton). Let \(\mathcal {SK}\) be the skeleton of an NNC polyhedron and let \(\mathcal {Q}= \mathop {\overline{\mathrm {gen}}}\nolimits (\mathcal {SK}) \in \mathbb {CP}_n\). The set of all supports for \(\mathcal {SK}\) is defined as \( \mathbb {NS}_{\mathcal {SK}} \mathrel {\buildrel \mathrm {def} \over {=}}\{\, \mathcal {SK}_F \subseteq \mathcal {SK}\mid F \in cFaces _{\mathcal {Q}} \,\} \).
We now define functions mapping a subset of the (geometric) points of an NNC polyhedron into the set of supports filled by these points, and vice versa.
Definition 3
Proposition 2
The pair of functions \((\alpha _{\mathcal {SK}}, \gamma _{\mathcal {SK}})\) is a Galois connection. If \(\mathcal {P}= \mathop {\mathrm {gen}}\nolimits \bigl ( \langle L, R, C, P \rangle \bigr ) \in \mathbb {P}_n\) and \(\mathcal {SK}\) is its skeleton, then \(\mathcal {P}= (\gamma _\mathcal {SK}\circ \alpha _\mathcal {SK})(P)\).
The nonskeleton component of a geometric generator system can be abstracted by ‘\(\alpha _\mathcal {SK}\)’ and described as a combination of skeleton generators.
Definition 4
(Nonskeleton of a generator system). Let \(\mathcal {P}\in \mathbb {P}_n\) be defined by generator system \(\mathcal {G}= \langle L, R, C, P \rangle \) and let \(\mathcal {SK}\) be the corresponding skeleton component. The nonskeleton component of \(\mathcal {G}\) is defined as \( NS _\mathcal {G}\mathrel {\buildrel \mathrm {def} \over {=}}\alpha _\mathcal {SK}(P) \).
Example 2
Consider the generator system \(\mathcal {G}\) of polyhedron \(\mathcal {P}\) from Example 1. Its skeleton is \( \mathcal {SK}= \bigl \langle \emptyset , \emptyset , \{c_0, c_1, c_2, p_0 \}, \emptyset \bigr \rangle \), so that \(p_1\) is not a skeleton point. By Definition 3, \( NS _{\mathcal {G}} = \alpha _\mathcal {SK}\bigl ( \{p_0, p_1 \} \bigr ) = \mathop {\uparrow }\nolimits \{p_0 \} \mathrel {\cup }\mathop {\uparrow }\nolimits \{c_0, c_1 \} \)^{2} The minimal elements in \( NS _{\mathcal {G}}\) can be seen to describe the atoms of \( nncFaces _\mathcal {P}\), i.e., the 0dimension face \(\{p_0 \}\) and the 1dimension open segment \((c_0, c_1)\).
The new representation is semantically equivalent to the fully geometric one.
Corollary 1
For a polyhedron \(\mathcal {P}= \mathop {\mathrm {gen}}\nolimits (\mathcal {G}) \in \mathbb {P}_n\), let \(\langle \mathcal {SK}, NS \rangle \) be the skeleton and nonskeleton components for \(\mathcal {G}\). Then \(\mathcal {P}= \gamma _\mathcal {SK}( NS )\).
4 The New Conversion Algorithm
The conversion function in Pseudocode 1 incrementally processes each of the input constraints \(\beta \in \mathcal {C}_{ in }\) keeping the generator system \(\langle \mathcal {SK}, NS \rangle \) uptodate. The distinction between the skeleton and nonskeleton allows for a corresponding separation in the conversion procedure. Moreover, a few minor adaptations to their representation, discussed below, allow for efficiency improvements.
First, observe that every support \( ns \in NS \) always includes all of the lines in the L skeleton component; hence, these lines can be left implicit in the representation of the supports in \( NS \). Note that, even after removing the lines, each \( ns \in NS \) is still a nonempty set, since it includes at least one closure point.
When lines are implicit, those supports \( ns \in NS \) that happen to be singletons^{3} can be seen to play a special role: they correspond to the combinatorial encoding of the skeleton points in \( SP \) (see Definition 1). These points are not going to benefit from the combinatorial representation, hence we move them from the nonskeleton to the skeleton component; namely, \(\mathcal {SK}= \langle L, R, C \mathrel {\cup } SP , \emptyset \rangle \) is represented as \(\mathcal {SK}= \langle L, R, C, SP \rangle \). The formalization presented in Sect. 3 is still valid, replacing ‘\(\gamma _{\mathcal {SK}}\)’ with \( \gamma '_{\mathcal {SK}}( NS ) \mathrel {\buildrel \mathrm {def} \over {=}}\mathop {\mathrm {gen}}\nolimits (\mathcal {SK}) \cup \gamma _{\mathcal {SK}}( NS ) \).
4.1 Processing the Skeleton
Case analysis for function ‘\(\mathop {\mathrm {comb}_{\beta }}\nolimits \)’ when adding an equality (\(\beta _=\)), a nonstrict (\(\beta _\ge \)) or a strict (\(\beta _>\)) inequality constraint to a pair of generators from \(\mathcal {SK}^+\) and \(\mathcal {SK}^\) (R = ray, C = closure point, SP = skeleton point).
\(\mathcal {SK}^+\)  R  R  R  C  C  C  SP  SP  SP  

\(\mathcal {SK}^\)  R  C  SP  R  C  SP  R  C  SP  
\(\beta _=\) or \(\beta _\ge \)  \(\mathcal {SK}^\star \)  R  C  SP  C  C  SP  SP  SP  SP 
\(\beta _>\)  \(\mathcal {SK}^\star \)  R  C  C  C  C  C  C  C  C 
4.2 Processing the Nonskeleton
In lines 8 and 9, we find the calls to the two main functions processing the nonskeleton component. A set \( NS ^\star \) of new supports is built as the union of the contributes provided by functions movens and createns.
Moving Supports. The movens function, shown in Pseudocode 2, processes the supports in \( NS ^\pm \): this function “moves” the fillers of the faces that are crossed by the new constraint, making sure they lie on the correct side.
Let \( ns \in NS ^\pm \) and \(F = \mathop {\mathrm {relint}}\nolimits (\mathop {\overline{\mathrm {gen}}}\nolimits ( ns ))\). Note that \( ns = \mathcal {SK}_F\) before the addition of the new constraint \(\beta \); at this point, the elements in \(\mathcal {SK}^\star \) have been added to \(\mathcal {SK}^0\), but this change still has to be propagated to the nonskeleton component \( NS \). Therefore, we compute the support closure ‘\(\mathop {\mathrm {supp.cl}}\nolimits _{\mathcal {SK}}( ns )\)’ according to the updated skeleton \(\mathcal {SK}\). Intuitively, \(\mathop {\mathrm {supp.cl}}\nolimits _{\mathcal {SK}}( ns ) \subseteq \mathcal {SK}\) is the subset of all the skeleton elements that are included in face F.
Example 3
Consider \(\mathcal {P}\in \mathbb {P}_2\) in the left hand side of the next figure.
The skeleton \(\mathcal {SK}= \langle \emptyset , \emptyset , C, \emptyset \rangle \) contains the closure points in \(C = \{ c_0, c_1, c_2, c_3 \}\); the nonskeleton \( NS = \{ ns \}\) contains a single support \( ns = \{ c_0, c_3 \}\), which makes sure that the open segment \((c_0, c_3)\) is included in \(\mathcal {P}\); the figure shows a single materialization for \( ns \).
Creating New Supports. Consider the case of a support \( ns \in NS ^\) violating a nonstrict inequality constraint \(\beta \): this support has to be removed from \( NS \). However, the upward closed set \( NS \) is represented by its minimal elements only so that, by removing \( ns \), we are also implicitly removing other supports from the set \(\mathop {\uparrow }\nolimits ns \), including some that do not belong to \( NS ^\) and hence should be kept. Therefore, we have to explore the set of faces and detect those that are going to lose their filler: their minimal supports will be added to \( NS ^\star \). Similarly, when processing a nonstrict inequality constraint, we need to consider the new faces introduced by the constraint: the corresponding supports can be found by projecting on the constraint hyperplane those faces that are possibly filled by an element in \( SP ^+\) or \( NS ^+\).
Example 4
Consider \(\mathcal {P}\in \mathbb {P}_2\) in the left hand side of the next figure, described by skeleton \(\mathcal {SK}= \langle \emptyset , \emptyset , \{ c_0, c_1, c_2 \}, \{ p \} \rangle \) and nonskeleton \( NS = \emptyset \).
It is worth noting that, when handling Example 4 adopting an entirely geometric representation, closure point \(c_1\) needs to be combined with point p even if the two generators are not adjacent: this leads to a significant efficiency penalty. Similarly, an implementation based on the \(\epsilon \)representation will have to combine closure point \(c_1\) with point p (and/or with some other \(\epsilon \)redundant points), because the addition of the slack variable makes them adjacent. Therefore, an implementation based on the new approach obtains a twofold benefit: first, the distinction between skeleton and nonskeleton allows for restricting the handling of nonadjacent combinations to the nonskeleton phase; second, thanks to the combinatorial representation, the nonskeleton component can be processed by using set index operations only, i.e., computing no linear combination at all.
Note that line 5 of conversion, by calling procedure violatingline (see Pseudocode 3) handles the special case of a line violating \(\beta \). This is just an optimization: the helper procedure strictoneqpoints can be seen as a tailored version of createns, also including the final updating of \(\mathcal {SK}\) and \( NS \).
4.3 Duality
Correspondences between generator and constraint concepts.
Generators  Constraints  

Geometric skeleton  
singular  line  equality 
nonsingular  ray or closure point  nonstrict inequality 
semantics  \(\mathop {\mathrm {gen}}\nolimits (\mathcal {SK}) = \emptyset \)  \(\mathop {\mathrm {con}}\nolimits (\mathcal {SK}) = \mathop {\mathrm {cl}}\nolimits (\mathcal {P})\) 
Combinatorial nonskeleton  
abstracts  point  strict inequality 
element role  face filler  face cutter 
represents  upward closed set  downward closed set 
encoding  minimal support  minimal support 
singleton  skeleton point  skeleton strict inequality 
For a nonempty \(\mathcal {P}= \mathop {\mathrm {con}}\nolimits (\mathcal {C}) \in \mathbb {P}_n\), the skeleton of \(\mathcal {C}= \langle C_=, C_\ge , C_> \rangle \) includes the nonredundant constraints defining \(\mathcal {Q}= \mathop {\mathrm {cl}}\nolimits (\mathcal {P})\). Denoting by \( SC _>\) the skeleton strict inequalities (i.e., those whose corresponding nonstrict inequality is not redundant for \(\mathcal {Q}\)), we have \( \mathcal {SK}_\mathcal {Q}\mathrel {\buildrel \mathrm {def} \over {=}}\langle C_=, C_\ge \mathrel {\cup } SC _> , \emptyset \rangle \), so that \(\mathcal {Q}= \mathop {\mathrm {con}}\nolimits (\mathcal {SK}_\mathcal {Q})\). The ghost faces of \(\mathcal {P}\) are the faces of the closure \(\mathcal {Q}\) that do not intersect \(\mathcal {P}\): \( gFaces _\mathcal {P}\mathrel {\buildrel \mathrm {def} \over {=}}\{\, F \in cFaces _\mathcal {Q}\mid F \mathrel {\cap }\mathcal {P}= \emptyset \,\} \); thus, \( \mathcal {P}= \mathop {\mathrm {con}}\nolimits (\mathcal {SK}_\mathcal {Q}) \mathrel {\setminus }\bigcup gFaces _\mathcal {P}\). The set \( gFaces ' \mathrel {\buildrel \mathrm {def} \over {=}} gFaces \mathrel {\cup }\{\mathcal {Q}\}\) is a meet sublattice of \( cFaces \); also, \( gFaces \) is downward closed and can be represented by its maximal elements.
The skeleton support \(\mathcal {SK}_F\) of a face \(F \in cFaces _\mathcal {Q}\) is defined as the set of all the skeleton constraints that are saturated by all the points in F. Each face \(F \in gFaces \) saturates a strict inequality \(\beta _> \in C_>\): we can represent such a face using its skeleton support \(\mathcal {SK}_F\) of which \(\beta _>\) is a possible materialization. A constraint system nonskeleton component \( NS \subseteq \mathbb {NS}\) is thus a combinatorial representation of the strict inequalities of the polyhedron.
Hence, the nonskeleton components for generators and constraints have a complementary role: in the case of generators they are face fillers, marking the minimal faces that are included in \( nncFaces \); in the case of constraints they are face cutters, marking the maximal faces that are excluded from \( nncFaces \). Note that the nonredundant cutters in \( gFaces \) are those having a minimal skeleton support, as is the case for the fillers.
As it happens with lines, all the equalities in \(C_=\) are included in all the supports \( ns \in NS \) so that, for efficiency, they are not represented explicitly. After removing the equalities, a singleton \( ns \in NS \) stands for a skeleton strict inequality constraint, which is better represented in the skeleton component, thereby obtaining \(\mathcal {SK}= \langle C_=, C_\ge , SC _> \rangle \). Hence, a support \( ns \in NS \) is redundant if there exists \( ns ' \in NS \) such that \( ns ' \subset ns \) or if \( ns \mathrel {\cap } SC _> \ne \emptyset \).
When the concepts underlying the skeleton and nonskeleton representation are reinterpreted as discussed above, it is possible to define a conversion procedure mapping a generator representation into a constraint representation which is very similar to the one from constraints to generators.
5 Experimental Evaluation
On the left hand side of the diagram we see the application of the standard PPL conversion procedure: the input \(\epsilon \)representation is processed by ‘old conversion’ so as to produce the output \(\epsilon \)representation DD pair. The ‘\(\epsilon \)less encoding’ phase produces a copy of the input without the slack variable; this is processed by ‘new conversion’ to produce the output DD pair, based on the new skeleton/nonskeleton representation. After the two conversions are completed, the outputs are checked for both semantic equivalence and nonredundancy. This final checking phase was successful on all the experiments performed, which include all of the tests in the PPL. In order to assess efficiency, additional code was added to measure the time spent inside the old and new conversion procedures, disregarding the input encoding and output checking phases. It is worth stressing that several experimental evaluations, including recent ones [2], confirm that the PPL is a stateoftheart implementation of the DD method for a wide spectrum of application contexts.
The first experiment^{5} on efficiency is meant to evaluate the overhead incurred by the new representation and algorithm for NNC polyhedra when processing topologically closed polyhedra, so as to compare it with the corresponding overhead incurred by the \(\epsilon \)representation. To this end, we considered the ppl_lcdd demo application of the PPL, which solves the vertex/facet enumeration problem. In Table 3 we report the results obtained on a selection of the test benchmarks^{6} when using: the conversion algorithm for closed polyhedra (columns 2–3); the conversion algorithm for the \(\epsilon \)representation of NNC polyhedra (columns 4–5); and the new conversion algorithm for the new representation of NNC polyhedra (columns 6–7). Columns ‘time’ report the number of milliseconds spent; columns ‘sat’ report the number of saturation (i.e., bit vector) operations, in millions.
Overhead of conversion for C polyhedra. Units: time (ms), sat (M).
test  closed poly  \(\epsilon \)repr  \(\langle \mathcal {SK}, NS \rangle \)  

time  sat  time  sat  time  sat  
cp6.ext  21  1.1  47  5.3  13  1.1 
cross12.ine  157  17.1  215  18.1  180  17.2 
in7.ine  47  1.7  149  6.1  27  0.9 
kkd38_6.ine  498  28.3  1870  113.2  218  14.2 
kq20_11_m.ine  42  1.7  153  6.1  27  0.9 
metric80_16.ine  39  2.3  76  5.4  25  2.0 
mit3120.ine  1109  88.7  35629  702.2  816  60.1 
mp6.ine  86  6.4  215  17.9  72  8.0 
reg6005_m.ext  906  24.7  3062  119.1  723  14.0 
sampleh8.ine  5916  307.4  42339  1420.7  3309  154.1 
trunc10.ine  1274  91.7  5212  396.6  803  89.9 
Comparing \(\epsilon \)representation based (standard and enhanced) computations for NNC polyhedra with the new conversion procedures.
algorithm  # iter  iter sizes  full conv  incr conv  \(\epsilon \)min  time  

median  max  num  time  num  time  time  ratio  
\(\epsilon \)repr standard  1142  3706  7259  4  11  3  30336  27  1460.9 
\(\epsilon \)repr enhanced  525  109  1661  7  204  0  —  29  11.2 
\(\langle \mathcal {SK}, NS \rangle \) standard  314  62  180  4  6  3  15  —  1.0 
Even though adopting the standard computation strategy (requiring no clever guess by the end user), the new algorithm obtains impressive time improvements, outperforming not only the standard, but also the enhanced computation strategy for the \(\epsilon \)representation. The reason for the latter efficiency improvement is that the enhanced computation strategy, when invoking the strong minimization procedures, interferes with incrementality: the figures in Table 4 confirm that the new algorithm performs three of the seven required conversions in an incremental way, while in the enhanced case they are all nonincremental. Moreover, a comparison of the iteration counts and the sizes of the intermediate results provides further evidence that the new algorithm is able to maintain a nonredundant description even during the iterations of a conversion.
6 Conclusion
We have presented a new approach for the representation of NNC polyhedra in the Double Description framework, avoiding the use of slack variables and distinguishing between the skeleton component, encoded geometrically, and the nonskeleton component, provided with a combinatorial encoding. We have proposed and implemented a variant of the Chernikova conversion procedure achieving significant efficiency improvements with respect to a stateoftheart implementation of the domain of NNC polyhedra, thereby providing a solution to all the issues affecting the \(\epsilon \)representation approach. As future work, we plan to develop a full implementation of the domain of NNC polyhedra based on this new representation. To this end, we will have to reconsider each semantic operator already implemented by the existing libraries (which are based on the addition of a slack variable), so as to propose, implement and experimentally evaluate a corresponding correct specification based on the new approach.
Footnotes
 1.
 2.
Since there are no rays and no lines, we adopt a simplified notation, identifying each support with the set of its closure points. Also note that \(\mathop {\mathrm {relint}}\nolimits (\{p_0\}) = \{p_0\}\).
 3.
By ‘singleton’ here we mean a system \( ns = \bigl \langle \emptyset , \emptyset , \{ \varvec{p} \}, \emptyset \bigr \rangle \).
 4.
This enumeration phase is inspired by the algorithm in [26].
 5.
All experiments have been performed on a laptop with an Intel Core i73632QM CPU, 16 GB of RAM and running GNU/Linux 4.13.025.
 6.
We only show the tests where PPL time on closed polyhedra is above 20 ms.
 7.
The test dualhypercubes.cc is distributed with the source code of the PPL.
References
 1.4ti2 team: 4ti2—a software package for algebraic, geometric and combinatorial problems on linear spaces. www.4ti2.de
 2.Assarf, B., Gawrilow, E., Herr, K., Joswig, M., Lorenz, B., Paffenholz, A., Rehn, T.: Computing convex hulls and counting integer points with polymake. Math. Program. Comput. 9(1), 1–38 (2017)MathSciNetCrossRefGoogle Scholar
 3.Bagnara, R., Hill, P.M., Zaffanella, E.: Not necessarily closed convex polyhedra and the double description method. Form. Asp. Comput. 17(2), 222–257 (2005)CrossRefGoogle Scholar
 4.Bagnara, R., Hill, P.M., Zaffanella, E.: Applications of polyhedral computations to the analysis and verification of hardware and software systems. Theor. Comput. Sci. 410(46), 4672–4691 (2009)MathSciNetCrossRefGoogle Scholar
 5.Bagnara, R., Ricci, E., Zaffanella, E., Hill, P.M.: Possibly not closed convex polyhedra and the Parma polyhedra library. In: Hermenegildo, M.V., Puebla, G. (eds.) SAS 2002. LNCS, vol. 2477, pp. 213–229. Springer, Heidelberg (2002). https://doi.org/10.1007/3540457895_17CrossRefGoogle Scholar
 6.Bastoul, C.: Code generation in the polyhedral model is easier than you think. In: Proceedings of the 13th International Conference on Parallel Architectures and Compilation Techniques (PACT 2004), Antibes JuanlesPins, France, pp. 7–16. IEEE Computer Society (2004)Google Scholar
 7.Becchi, A., Zaffanella, E.: A conversion procedure for NNC polyhedra. CoRR, abs/1711.09593 (2017)Google Scholar
 8.Benerecetti, M., Faella, M., Minopoli, S.: Automatic synthesis of switching controllers for linear hybrid systems: safety control. Theor. Comput. Sci. 493, 116–138 (2013)MathSciNetCrossRefGoogle Scholar
 9.Birkhoff, G.: Lattice Theory. 3rd edn. Volume XXV of Colloquium Publications. American Mathematical Society, Providence (1967)Google Scholar
 10.Chernikova, N.V.: Algorithm for finding a general formula for the nonnegative solutions of system of linear equations. U.S.S.R. Comput. Math. Math. Phys. 4(4), 151–158 (1964)CrossRefGoogle Scholar
 11.Chernikova, N.V.: Algorithm for finding a general formula for the nonnegative solutions of system of linear inequalities. U.S.S.R. Comput. Math. Math. Phys. 5(2), 228–233 (1965)MathSciNetCrossRefGoogle Scholar
 12.Chernikova, N.V.: Algorithm for discovering the set of all solutions of a linear programming problem. U.S.S.R. Comput. Math. Math. Phys. 8(6), 282–293 (1968)CrossRefGoogle Scholar
 13.Colón, M.A., Sipma, H.B.: Synthesis of linear ranking functions. In: Margaria, T., Yi, W. (eds.) TACAS 2001. LNCS, vol. 2031, pp. 67–81. Springer, Heidelberg (2001). https://doi.org/10.1007/3540453199_6CrossRefzbMATHGoogle Scholar
 14.Cousot, P., Cousot, R.: Systematic design of program analysis frameworks. In: Proceedings of the Sixth Annual ACM Symposium on Principles of Programming Languages, San Antonio, TX, USA, pp. 269–282 (1979)Google Scholar
 15.Cousot, P., Halbwachs, N.: Automatic discovery of linear restraints among variables of a program. In: Conference Record of the Fifth Annual ACM Symposium on Principles of Programming Languages, Tucson, Arizona, pp. 84–96 (1978)Google Scholar
 16.Doose, D., Mammeri, Z.: Polyhedrabased approach for incremental validation of realtime systems. In: Yang, L.T., Amamiya, M., Liu, Z., Guo, M., Rammig, F.J. (eds.) EUC 2005. LNCS, vol. 3824, pp. 184–193. Springer, Heidelberg (2005). https://doi.org/10.1007/11596356_21CrossRefGoogle Scholar
 17.Ellenbogen, R.: Fully automatic verification of absence of errors via interprocedural integer analysis. Master’s thesis, School of Computer Science, TelAviv University, TelAviv, Israel, December 2004Google Scholar
 18.Frehse, G.: PHAVer: algorithmic verification of hybrid systems past HyTech. Softw. Tools Technol. Transf. 10(3), 263–279 (2008)MathSciNetCrossRefGoogle Scholar
 19.Fukuda, K., Prodon, A.: Double description method revisited. In: Deza, M., Euler, R., Manoussakis, I. (eds.) CCS 1995. LNCS, vol. 1120, pp. 91–111. Springer, Heidelberg (1996). https://doi.org/10.1007/3540615768_77CrossRefGoogle Scholar
 20.Genov, B.: The Convex Hull Problem in Practice: Improving the Running Time of the Double Description Method. Ph.D. thesis, University of Bremen, Germany (2014)Google Scholar
 21.Gopan, D.: Numeric Program Analysis Techniques with Applications to Array Analysis and Library Summarization. Ph.D. thesis, University of Wisconsin, Madison, Wisconsin, USA, August 2007Google Scholar
 22.Halbwachs, N., Proy, Y.E., Raymond, P.: Verification of linear hybrid systems by means of convex approximations. In: Le Charlier, B. (ed.) SAS 1994. LNCS, vol. 864, pp. 223–237. Springer, Heidelberg (1994). https://doi.org/10.1007/3540584854_43CrossRefGoogle Scholar
 23.Halbwachs, N., Proy, Y.E., Roumanoff, P.: Verification of realtime systems using linear relation analysis. Form. Methods Syst. Des. 11(2), 157–185 (1997)CrossRefGoogle Scholar
 24.Henry, J., Monniaux, D., Moy, M.: PAGAI: a path sensitive static analyser. Electr. Notes Theor. Comput. Sci. 289, 15–25 (2012)CrossRefGoogle Scholar
 25.Jeannet, B., Miné, A.: Apron: a library of numerical abstract domains for static analysis. In: Bouajjani, A., Maler, O. (eds.) CAV 2009. LNCS, vol. 5643, pp. 661–667. Springer, Heidelberg (2009). https://doi.org/10.1007/9783642026584_52CrossRefGoogle Scholar
 26.Kaibel, V., Pfetsch, M.E.: Computing the face lattice of a polytope from its vertexfacet incidences. Comput. Geom. 23(3), 281–290 (2002)MathSciNetCrossRefGoogle Scholar
 27.Loechner, V.: PolyLib: a library for manipulating parameterized polyhedra (1999). http://icps.ustrasbg.fr/PolyLib/
 28.Motzkin, T.S., Raiffa, H., Thompson, G.L., Thrall, R.M.: The double description method. In: Contributions to the Theory of Games  Volume II, number 28 in Annals of Mathematics Studies, pp. 51–73. Princeton University Press, Princeton (1953)Google Scholar
 29.Pop, S., Silber, G.A., Cohen, A., Bastoul, C., Girbal, S., Vasilache, N.: GRAPHITE: Polyhedral analyses and optimizations for GCC. Technical Report A/378/CRI, Centre de Recherche en Informatique, École des Mines de Paris, Fontainebleau, France (2006)Google Scholar
 30.Singh, G., Püschel, M., Vechev, M.T.: Fast polyhedra abstract domain. In: Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, POPL 2017, Paris, France, pp. 46–59 (2017)Google Scholar
 31.Terzer, M., Stelling, J.: Largescale computation of elementary flux modes with bit pattern trees. Bioinformatics 24(19), 2229–2235 (2008)CrossRefGoogle Scholar
 32.Terzer, M., Stelling, J.: Parallel extreme ray and pathway computation. In: Wyrzykowski, R., Dongarra, J., Karczewski, K., Wasniewski, J. (eds.) PPAM 2009. LNCS, vol. 6068, pp. 300–309. Springer, Heidelberg (2010). https://doi.org/10.1007/9783642144035_32CrossRefGoogle Scholar
 33.Zolotykh, N.Y.: New modification of the double description method for constructing the skeleton of a polyhedral cone. Comput. Math. Math. Phys. 52(1), 146–156 (2012)MathSciNetCrossRefGoogle Scholar
Copyright information
<SimplePara><Emphasis Type="Bold">Open Access</Emphasis>This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License(http://creativecommons.org/licenses/by/4.0/), 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 license and indicate if changes were made.</SimplePara><SimplePara>The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license 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.</SimplePara>