short_rat::print: correctly print out terms with a zero coefficient
[barvinok.git] / doc / implementation.tex
blob1006348f34bebe9e9035f3619cf17bc61c2f6ea4
1 \section{Implementation details}
3 \subsection{An interior point of a polyhedron}
4 \label{s:interior}
6 We often need a point that lies in the interior of a polyhedron.
7 The function \ai[\tt]{inner\_point} implements the following algorithm.
8 Each polyhedron $P$ can be written as the sum of a polytope $P'$ and a cone $C$
9 (the \ai{recession cone} or \ai{characteristic cone} of $P$).
10 Adding a positive multiple of the sum of the extremal rays of $C$ to
11 the \ai{barycenter}
13 \frac 1 N \sum_i \vec v_i(\vec p)
15 of $P'$, where $N$ is the number of vertices, results in a point
16 in the interior of $P$.
18 \subsection{The integer points in the fundamental parallelepiped of a simple cone}
20 \label{s:fundamental}
22 This section is based on \shortciteN[Lemma 5.1]{Barvinok1992volume} and
23 \shortciteN{Koeppe2006experiments}.
25 \sindex{simple}{cone}
26 \sindex{open}{facet}
27 \sindex{open}{ray}
28 \sindex{explicit}{representation}
29 In this section we will deal exclusively with \ai{simple cone}s,
30 i.e. $d$-dimensional cones with $d$ extremal rays and $d$ facets.
31 \index{open facet}%
32 Some of the facets of these cones may be open.
33 Since we will mostly be dealing with cones in their
34 \ai{explicit representation}, we will have occasion to speak of
35 ``\ai{open ray}s'', by which we will mean that the facet not
36 containing the ray is open. (There is only one such facet because the cone
37 is simple.)
39 \sindex{fundamental}{parallelepiped}
40 \begin{definition}[Fundamental parallelepiped]
41 Let $K = \vec v + \poshull \lb\, \vec u_i \,\rb$ be
42 a closed (shifted) cone, then the \defindex{fundamental parallelepiped} $\Pi$
43 of $K$ is
45 \Pi = \vec v +
46 \lb\, \sum_i \alpha_i \vec u_i \mid 0 \leq \alpha_i < 1 \,\rb
49 If some of the rays $\vec u_i$ of $K$ are open, then the constraints on
50 the corresponding coefficient $\alpha_i$ are such that $0 < \alpha_i \le 1$.
51 \end{definition}
53 \begin{lemma}[Integer points in the fundamental parallelepiped of a simple cone]
54 \label{l:fundamental}
55 Let $K = \vec v + \poshull \lb\, \vec u_i \,\rb$ be a closed simple cone
56 and let $A$ be the matrix with the generators $\vec u_i$ of $K$
57 as rows.
58 Furthermore let $V A W^{-1} = S = \diag \vec s$ be the \indac{SNF} of $A$.
59 Then the integer points in the fundamental parallelepiped of $K$ are given
61 \begin{eqnarray}
62 \label{eq:parallelepiped}
63 \vec w^\T & = & \vec v^\T + \fractional{(\vec k^\T W - \vec v^\T) A^{-1}} A
65 \nonumber
66 & = &
67 \vec v^\T +
68 \sum_{i=1}^d
69 \fractional{\sps{\sum_{j=1}^d k_j \vec w^\T_j - \vec v^\T}{\vec u^*_i}}
70 \vec u_i^\T,
71 \end{eqnarray}
72 where $\vec u^*_i$ are the columns of $A^{-1}$ and $k_j \in \ZZ$ ranges
73 over $0 \le k_j < s_j$.
74 \end{lemma}
76 \begin{proof}
77 Since $0 \le \fractional{x} < 1$, it is clear that each such $\vec w$
78 lies inside the fundamental parallelepiped.
79 Furthermore,
80 \begin{eqnarray*}
81 \vec w^\T & = & \vec v^\T + \fractional{(\vec k^\T W - \vec v^\T) A^{-1}} A
83 & = &
84 \vec v^T +
85 \left(
86 (\vec k^\T W - \vec v^\T) A^{-1} - \floor{(\vec k^\T W - \vec v^\T) A^{-1}}
87 \right) A
89 & = &
90 \underbrace{\vec k^\T W\mathstrut}_{\in \ZZ^{1\times d}}
92 \underbrace{\floor{(\vec k^\T W - \vec v^\T) A^{-1}}}_{\in \ZZ^{1\times d}}
93 \underbrace{A\mathstrut}_{\in \ZZ^{d\times d}} \in \ZZ^{1\times d}.
94 \end{eqnarray*}
95 Finally, if two such $\vec w$ are equal, i.e., $\vec w_1 = \vec w_2$,
96 then
97 \begin{eqnarray*}
98 \vec 0^\T = \vec w_1^\T - \vec w_2^\T
99 & = & \vec k_1^\T W - \vec k_2^\T W + \vec p^\T A
101 & = & \left(\vec k_1^\T - \vec k_2^\T \right) W + \vec p^\T V^{-1} S W,
102 \end{eqnarray*}
103 with $\vec p \in \ZZ^d$,
104 or $\vec k_1 \equiv \vec k_2 \mod \vec s$, i.e., $\vec k_1 = \vec k_2$.
105 Since $\det S = \det A$, we obtain all points in the fundamental parallelepiped
106 by taking all $\vec k \in \ZZ^d$ satisfying $0 \le k_j < s_j$.
107 \end{proof}
109 If the cone $K$ is not closed then the coefficients of the open rays
110 should be in $(0,1]$ rather than in $[0,1)$.
111 In (\ref{eq:parallelepiped}),
112 we therefore need to replace the fractional part $\fractional{x} = x - \floor{x}$
113 by $\cractional{x} = x - \ceil{x-1}$ for the open rays.
115 \begin{figure}
116 \intercol=1.2cm
117 \begin{xy}
118 <\intercol,0pt>:<0pt,\intercol>::
119 \POS@i@={(0,-3),(0,0),(4,2),(4,-3)},{0*[grey]\xypolyline{*}}
120 \POS@i@={(0,-3),(0,0),(4,2)},{0*[|(2)]\xypolyline{}}
121 \POS(-1,0)\ar(4.5,0)
122 \POS(0,-3)\ar(0,3)
123 \POS(0,0)\ar@[|(3)](0,-1)
124 \POS(0,0)\ar@[|(3)](2,1)
125 \POS(0,-1)\ar@{--}@[|(2)](2,0)
126 \POS(2,1)\ar@{--}@[|(2)](2,0)
127 \POS(0,0)*{\bullet}
128 \POS(1,0)*{\bullet}
129 \end{xy}
130 \caption{The integer points in the fundamental parallelepiped of $K$}
131 \label{f:parallelepiped}
132 \end{figure}
134 \begin{example}
135 Let $K$ be the cone
137 K = \sm{0 \\ 0} + \poshull \lb\, \sm{2 \\ 1}, \sm{0 \\ -1} \,\rb
140 shown in Figure~\ref{f:parallelepiped}.
141 Then
143 A = \sm{2 & 1\\0 & -1} \qquad A^{-1} = \sm{1/2 & 1/2 \\ 0 & -1 }
147 \sm{1 & 0 \\ 1 & 1 } \sm{2 & 1\\0 & -1} = \sm{1 & 0 \\ 0 & 2} \sm{2 & 1 \\ 1 & 0}.
149 We have $\det A = \det S = 2$ and
150 $\vec k_1^\T = \sm{0 & 0}$ and $\vec k_2^\T = \sm{0 & 1}$.
151 Therefore,
153 \vec w_1^\T = \fractional{\sm{0 & 0} \sm{2 & 1 \\ 1 & 0} \sm{1/2 & 1/2 \\ 0 & -1 }}
154 \sm{2 & 1\\0 & -1} = \sm{0 & 0}
157 \begin{eqnarray*}
158 \vec w_2^\T & = &
159 \fractional{\sm{0 & 1} \sm{2 & 1 \\ 1 & 0} \sm{1/2 & 1/2 \\ 0 & -1 }}
160 \sm{2 & 1\\0 & -1}
162 & = &
163 \sm{1/2 & 1/2} \sm{2 & 1\\0 & -1} = \sm{1 & 0}.
164 \end{eqnarray*}
165 \end{example}
170 \subsection{Barvinok's decomposition of simple cones in primal space}
171 \label{s:decomposition}
173 As described by \shortciteN{DeLoera2003effective}, the first
174 implementation of Barvinok's counting algorithm applied
175 \ai{Barvinok's decomposition} \shortcite{Barvinok1994} in the \ai{dual space}.
176 \ai{Brion's polarization trick} \shortcite{Brion88} then ensures that you
177 do not need to worry about lower-dimensional faces in the decomposition.
178 Another way of avoiding the lower-dimensional faces, in the \ai{primal space},
179 is to perturb the vertex of the cone such that none of the lower-dimensional
180 face encountered contain any integer points \shortcite{Koeppe2006primal}.
181 In this section, we describe another technique that is based on allowing
182 some of the facets of the cone to be open.
184 The basic step in Barvinok's decomposition is to replace a
185 $d$-dimensional simple cone
186 $K = \poshull \lb\, \vec u_i \,\rb_{i=1}^d \subset \QQ^d$
187 by a signed sum of (at most) $d$ cones $K_j$
188 with a smaller determinant (in absolute value).
189 The cones are obtained by successively replacing each generator
190 of $K$ by an appropriately chosen
191 $\vec w = \sum_{i=1}^d \alpha_i \vec u_i$, i.e.,
192 \begin{equation}
193 \label{eq:K_j}
194 K_j =
195 \poshull \left(\lb\, \vec u_i \,\rb_{i=1}^d
196 \setminus \{\, \vec u_j \,\} \cup \{\, \vec w \,\}\right)
198 \end{equation}
199 To see that we can use these $K_j$ to perform a decomposition,
200 rearrange the $\vec u_i$ such that for all $1 \le i \le k$ we have
201 $\alpha_i < 0$ and for all $k+1 \le i \le d'$ we have $\alpha_i > 0$,
202 with $d - d'$ the number of zero $\alpha_i$.
203 We may assume $k < d'$; otherwise replace $\vec w \in B$ by
204 $-\vec w \in B$. We have
206 \vec w + \sum_{i=1}^k (-\alpha_i) \vec u_i =
207 \sum_{i=k+1}^{d'} \alpha_i \vec u_i
210 \begin{equation}
211 \label{eq:sub}
212 \sum_{i=0}^k \beta_i \vec u_i =
213 \sum_{i=k+1}^{d'} \alpha_i \vec u_i
215 \end{equation}
216 with $\vec u_0 = \vec w$, $\beta_0 = 1$ and $\beta_i = -\alpha_i > 0$
217 for $1 \le i \le k$. Any two $\vec u_j$ and $\vec u_l$ on the same side
218 of the equality are on opposite sides of the linear hull $H$ of
219 the other $\vec u_i$s since there exists a convex combination
220 of $\vec u_j$ and $\vec u_l$ on this hyperplane.
221 In particular, since $\alpha_j$ and $\alpha_l$ have the same sign,
222 we have
223 \begin{equation}
224 \label{eq:opposite}
225 \frac {\alpha_j}{\alpha_j+\alpha_l} \vec u_j
227 \frac {\alpha_l}{\alpha_j+\alpha_l} \vec u_l
228 \in H
229 \qquad\text{for $\alpha_i \alpha_l > 0$}
231 \end{equation}
232 The corresponding cones $K_j$ and $K_l$ (with $K_0 = K$)
233 therefore intersect in a common face $F \subset H$.
234 Let
236 K' :=
237 \poshull \left(\lb\, \vec u_i \,\rb_{i=1}^d \cup \{\, \vec w \,\}\right)
240 then any $\vec x \in K'$ lies both in some cone $K_i$ with
241 $0 \le i \le k$ and in some cone $K_i$ with $k+1 \le i \le d'$.
242 (Just subtract an appropriate multiple of Equation~(\ref{eq:sub}).)
243 The cones
244 $\{\, K_i \,\}_{i=0}^k$
246 $\{\, K_i \,\}_{i=k+1}^{d'}$
247 therefore both form a triangulation of $K'$ and hence
248 \begin{equation}
249 \label{eq:triangulations}
250 \indf{K'}
252 \indf{K} + \sum_{i=1}^k \indf{K_i} - \sum_{j\in J_1} \indf{F_j}
254 \sum_{i=k+1}^{d'} \indf{K_i} - \sum_{j\in J_2} \indf{F_j}
255 \end{equation}
257 \begin{equation}
258 \label{eq:decomposition}
259 \indf{K} = \sum_{i=1}^{d'} \varepsilon_i \indf{K_i} + \sum_j \delta_j \indf{F_j}
261 \end{equation}
262 with $\varepsilon_i = -1$ for $1 \le i \le k$,
263 $\varepsilon_i = 1$ for $k+1 \le i \le d'$,
264 $\delta_j \in \{ -1, 1 \}$ and $F_j$ some lower-dimensional faces.
265 Figure~\ref{fig:w} shows the possible configurations
266 in the case of a $3$-dimensional cone.
268 \begin{figure}
269 \intercol=0.48cm
270 \begin{center}
271 \begin{minipage}{0cm}
272 \begin{xy}
273 <\intercol,0pt>:<0pt,\intercol>::
275 \xybox{
276 \POS(-2,-1)="a"*+!U{+}
277 \POS(2,0)="b"*+!L{+}
278 \POS(0,2)="c"*+!D{+}
279 \POS(0,0)="w"*+!DR{\vec w}
280 \POS"a"\ar@{-}"b"
281 \POS"b"\ar@{-}"c"
282 \POS"c"\ar@{-}"a"
283 \POS"a"\ar@{--}"w"
284 \POS"b"\ar@{--}"w"
285 \POS"c"\ar@{--}"w"
286 }="a"
287 +R+(2,0)*!L
288 \xybox{
289 \POS(-2,-1)="a"*+!U{+}
290 \POS(2,0)="b"*+!L{-}
291 \POS(0,2)="c"*+!D{+}
292 \POS(-3,1)="w"*+!DR{\vec w}
293 \POS"a"\ar@{-}"b"
294 \POS"b"\ar@{-}"c"
295 \POS"c"\ar@{-}"a"
296 \POS"a"\ar@{--}"w"
297 \POS"b"\ar@{--}"w"
298 \POS"c"\ar@{--}"w"
299 }="b"
300 +R+(2,0)*!L
301 \xybox{
302 \POS(-2,-1)="a"*+!U{-}
303 \POS(2,0)="b"*+!U{+}
304 \POS(0,2)="c"*+!D{-}
305 \POS(5,-1)="w"*+!L{\vec w}
306 \POS"a"\ar@{-}"b"
307 \POS"b"\ar@{-}"c"
308 \POS"c"\ar@{-}"a"
309 \POS"a"\ar@{--}"w"
310 \POS"b"\ar@{--}"w"
311 \POS"c"\ar@{--}"w"
313 \POS"a"
314 +D-(0,1)*!U
315 \xybox{
316 \POS(-2,-1)="a"*+!U{0}
317 \POS(2,0)="b"*+!L{+}
318 \POS(0,2)="c"*+!D{+}
319 \POS(1,1)="w"*+!DL{\vec w}
320 \POS"a"\ar@{-}"b"
321 \POS"b"\ar@{-}"c"
322 \POS"c"\ar@{-}"a"
323 \POS"a"\ar@{--}"w"
325 \POS"b"
326 +DL-(0,1)*!UL
327 \xybox{
328 \POS(-2,-1)="a"*+!U{0}
329 \POS(2,0)="b"*+!U{+}
330 \POS(0,2)="c"*+!D{-}
331 \POS(4,-2)="w"*+!L{\vec w}
332 \POS"a"\ar@{-}"b"
333 \POS"b"\ar@{-}"c"
334 \POS"c"\ar@{-}"a"
335 \POS"a"\ar@{--}"w"
336 \POS"b"\ar@{--}"w"
338 \end{xy}
339 \end{minipage}
340 \end{center}
341 \caption[Possible locations of the vector $\vec w$ with respect to the rays
342 of a $3$-dimensional cone.]
343 {Possible locations of $\vec w$ with respect to the rays
344 of a $3$-dimensional cone. The figure shows a section of the cones.}
345 \label{fig:w}
346 \end{figure}
348 As explained above there are several ways of avoiding the lower-dimensional
349 faces in (\ref{eq:decomposition}). Here we will apply the following proposition.
350 \begin{proposition}[\shortciteN{Koeppe2007parametric}]
351 \label{p:inclusion-exclusion}
352 Let
353 \begin{equation}
354 \label{eq:full-source-identity}
355 \sum_{i\in {I_1}} \epsilon_i [P_i] + \sum_{i\in {I_2}} \delta_k [P_i] = 0
356 \end{equation}
357 be a (finite) linear identity of indicator functions of closed
358 polyhedra~$P_i\subseteq\QQ^d$, where the
359 polyhedra~$P_i$ with $i \in I_1$ are full-dimensional and those with $i \in I_2$
360 lower-dimensional. Let each closed polyhedron be given as
362 P_i = \left\{\, \vec x \mid \sp{b^*_{i,j}}{x} \ge \beta_{i,j} \text{
363 for $j\in J_i$}\,\right\}
366 Let $\vec y\in\QQ^d$ be a vector such that $\langle \vec b^*_{i,j}, \vec
367 y\rangle \neq 0$ for all $i\in I_1\cup I_2$, $j\in J_i$.
368 For each $i\in I_1$, we define the half-open polyhedron
369 \begin{equation}
370 \label{eq:half-open-by-y}
371 \begin{aligned}
372 \tilde P_i = \Bigl\{\, \vec x\in\QQ^d \mid {}&
373 \sp{b^*_{i,j}}{x} \ge \beta_{i,j}
374 \text{ for $j\in J_i$ with $\sp{b^*_{i,j}}{y} > 0$,} \\
375 & \sp{b^*_{i,j}}{x} > \beta_{i,j}
376 \text{ for $j\in J_i$ with $\sp{b^*_{i,j}}{y} < 0$} \,\Bigr\}.
377 \end{aligned}
378 \end{equation}
379 Then
380 \begin{equation}
381 \label{eq:target-identity}
382 \sum_{i\in I_1} \epsilon_i [\tilde P_i] = 0.
383 \end{equation}
384 \end{proposition}
385 When applying this proposition to (\ref{eq:decomposition}), we obtain
386 \begin{equation}
387 \label{eq:decomposition:2}
388 \indf{\tilde K} = \sum_{i=1}^{d'} \varepsilon_i \indf{\tilde K_i}
390 \end{equation}
391 where we start out
392 from a given $\tilde K$, which may be $K$ itself, i.e., a fully closed cone,
393 or the result of a previous application of the proposition, either through
394 a triangulation (Section~\ref{s:triangulation}) or a previous decomposition.
395 In either case, a suitable $\vec y$ is available, either as an interior
396 point of the cone or as the vector used in the previous application
397 (which may require a slight perturbation if it happens to lie on one of
398 the new facets of the cones $K_i$).
399 We are, however, free to construct a new $\vec y$ on each application
400 of the proposition.
401 In fact, we will not even construct such a vector explicitly, but
402 rather apply a set of rules that is equivalent to a valid choice of $\vec y$.
403 Below, we will present an ``intuitive'' motivation for these rules.
404 For a more algebraic, shorter, and arguably simpler motivation we
405 refer to \shortciteN{Koeppe2007parametric}.
407 The vector $\vec y$ has to satisfy $\sp{b^*_j}y > 0$ for normals $\vec b^*_j$
408 of closed facets and $\sp{b^*_j}y < 0$ for normals $\vec b^*_j$ of open facets of
409 $\tilde K$.
410 These constraints delineate a non-empty open cone $R$ from which
411 $\vec y$ should be selected. For some of the new facets of the cones
412 $\tilde K_j$, the cone $R$ will not be cut by the affine hull of the facet.
413 The closedness of these facets is therefore predetermined by $\tilde K$.
414 For the other facets, a choice will have to be made.
415 To be able to make the choice based on local information and without
416 computing an explicit vector $\vec y$, we use the following convention.
417 We first assign an arbitrary total order to the rays.
418 If (the affine hull of) a facet separates the two rays not on the facet $\vec u_i$
419 and $\vec u_j$, i.e., $\alpha_i \alpha_j > 0$ (\ref{eq:opposite}), then
420 we choose $\vec y$ to lie on the side of the smallest ray, according
421 to the chosen order.
422 That is, $\sp{{\tilde n}_{ij}}y > 0$, for
423 $\vec {\tilde n}_{ij}$ the normal of the facet pointing towards this smallest ray.
424 Otherwise, i.e., if $\alpha_i \alpha_j < 0$,
425 the interior of $K$ will lie on one side
426 of the facet and then we choose $\vec y$ to lie on the other side.
427 That is, $\sp{{\tilde n}_{ij}}y > 0$, for
428 $\vec {\tilde n}_{ij}$ the normal of the facet pointing away from the cone $K$.
429 Figure~\ref{fig:primal:examples} shows some example decompositions with
430 an explicitly marked $\vec y$.
432 \begin{figure}
433 \begin{align*}
434 \intercol=0.48cm
435 \begin{xy}
436 <\intercol,0pt>:<0pt,\intercol>::
437 \POS(-2,-1)="a"*+!U{+}
438 \POS(2,0)="b"*+!L{+}
439 \POS(0,2)="c"*+!D{+}
440 \POS"a"\ar@{-}@[|(3)]"b"
441 \POS"b"\ar@{-}@[|(3)]"c"
442 \POS"c"\ar@{-}@[|(3)]"a"
443 \POS(0.3,0.6)*{\bullet},*+!L{\vec y}
444 \end{xy}
446 \intercol=0.48cm
447 \begin{xy}
448 <\intercol,0pt>:<0pt,\intercol>::
449 \POS(2,0)="b"*+!L{+}
450 \POS(0,2)="c"*+!D{+}
451 \POS(0,0)="w"*+!DR{\vec w}
452 \POS"b"\ar@{-}@[|(3)]"c"
453 \POS"b"\ar@{-}@[|(3)]"w"
454 \POS"c"\ar@{-}@[|(3)]"w"
455 \POS(0.3,0.6)*{\bullet},*+!L{\vec y}
456 \end{xy}
458 \begin{xy}
459 <\intercol,0pt>:<0pt,\intercol>::
460 \POS(-2,-1)="a"*+!U{+}
461 \POS(0,2)="c"*+!D{+}
462 \POS(0,0)="w"*+!DR{\vec w}
463 \POS"c"\ar@{-}@[|(3)]"a"
464 \POS"a"\ar@{-}@[|(3)]"w"
465 \POS"c"\ar@{--}@[|(3)]"w"
466 \POS(0.3,0.6)*{\bullet},*+!L{\vec y}
467 \end{xy}
469 \begin{xy}
470 <\intercol,0pt>:<0pt,\intercol>::
471 \POS(-2,-1)="a"*+!U{+}
472 \POS(2,0)="b"*+!L{+}
473 \POS(0,0)="w"*+!DR{\vec w}
474 \POS"a"\ar@{-}@[|(3)]"b"
475 \POS"a"\ar@{--}@[|(3)]"w"
476 \POS"b"\ar@{--}@[|(3)]"w"
477 \POS(0.3,0.6)*{\bullet},*+!L{\vec y}
478 \end{xy}
480 \intercol=0.48cm
481 \begin{xy}
482 <\intercol,0pt>:<0pt,\intercol>::
483 \POS(-2,-1)="a"*+!U{+}
484 \POS(2,0)="b"*+!L{+}
485 \POS(0,2)="c"*+!D{+}
486 \POS"a"\ar@{--}@[|(3)]"b"
487 \POS"b"\ar@{-}@[|(3)]"c"
488 \POS"c"\ar@{--}@[|(3)]"a"
489 \POS(-2.5,-1.5)*{\bullet},*+!U{\vec y}
490 \end{xy}
492 \intercol=0.48cm
493 \begin{xy}
494 <\intercol,0pt>:<0pt,\intercol>::
495 \POS(2,0)="b"*+!L{+}
496 \POS(0,2)="c"*+!D{+}
497 \POS(0,0)="w"*+!DR{\vec w}
498 \POS"b"\ar@{-}@[|(3)]"c"
499 \POS"b"\ar@{--}@[|(3)]"w"
500 \POS"c"\ar@{--}@[|(3)]"w"
501 \POS(-2.5,-1.5)*{\bullet},*+!U{\vec y}
502 \end{xy}
504 \begin{xy}
505 <\intercol,0pt>:<0pt,\intercol>::
506 \POS(-2,-1)="a"*+!U{+}
507 \POS(0,2)="c"*+!D{+}
508 \POS(0,0)="w"*+!DR{\vec w}
509 \POS"c"\ar@{--}@[|(3)]"a"
510 \POS"a"\ar@{--}@[|(3)]"w"
511 \POS"c"\ar@{-}@[|(3)]"w"
512 \POS(-2.5,-1.5)*{\bullet},*+!U{\vec y}
513 \end{xy}
515 \begin{xy}
516 <\intercol,0pt>:<0pt,\intercol>::
517 \POS(-2,-1)="a"*+!U{+}
518 \POS(2,0)="b"*+!L{+}
519 \POS(0,0)="w"*+!DR{\vec w}
520 \POS"a"\ar@{--}@[|(3)]"b"
521 \POS"a"\ar@{-}@[|(3)]"w"
522 \POS"b"\ar@{-}@[|(3)]"w"
523 \POS(-2.5,-1.5)*{\bullet},*+!U{\vec y}
524 \end{xy}
526 \intercol=0.48cm
527 \begin{xy}
528 <\intercol,0pt>:<0pt,\intercol>::
529 \POS(-2,-1)="a"*+!U{+}
530 \POS(2,0)="b"*+!L{+}
531 \POS(0,2)="c"*+!D{+}
532 \POS"a"\ar@{--}@[|(3)]"b"
533 \POS"b"\ar@{-}@[|(3)]"c"
534 \POS"c"\ar@{-}@[|(3)]"a"
535 \POS(1,-1.5)*{\bullet},*+!L{\vec y}
536 \end{xy}
538 \intercol=0.48cm
539 \begin{xy}
540 <\intercol,0pt>:<0pt,\intercol>::
541 \POS(2,0)="b"*+!L{+}
542 \POS(0,2)="c"*+!D{+}
543 \POS(0,0)="w"*+!DR{\vec w}
544 \POS"b"\ar@{-}@[|(3)]"c"
545 \POS"b"\ar@{--}@[|(3)]"w"
546 \POS"c"\ar@{-}@[|(3)]"w"
547 \POS(1,-1.5)*{\bullet},*+!L{\vec y}
548 \end{xy}
550 \begin{xy}
551 <\intercol,0pt>:<0pt,\intercol>::
552 \POS(-2,-1)="a"*+!U{+}
553 \POS(0,2)="c"*+!D{+}
554 \POS(0,0)="w"*+!DR{\vec w}
555 \POS"c"\ar@{-}@[|(3)]"a"
556 \POS"a"\ar@{--}@[|(3)]"w"
557 \POS"c"\ar@{--}@[|(3)]"w"
558 \POS(1,-1.5)*{\bullet},*+!L{\vec y}
559 \end{xy}
561 \begin{xy}
562 <\intercol,0pt>:<0pt,\intercol>::
563 \POS(-2,-1)="a"*+!U{+}
564 \POS(2,0)="b"*+!L{+}
565 \POS(0,0)="w"*+!DR{\vec w}
566 \POS"a"\ar@{--}@[|(3)]"b"
567 \POS"a"\ar@{-}@[|(3)]"w"
568 \POS"b"\ar@{-}@[|(3)]"w"
569 \POS(1,-1.5)*{\bullet},*+!L{\vec y}
570 \end{xy}
572 \intercol=0.48cm
573 \begin{xy}
574 <\intercol,0pt>:<0pt,\intercol>::
575 \POS(-2,-1)="a"*+!U{0}
576 \POS(2,0)="b"*+!L{+}
577 \POS(0,2)="c"*+!D{+}
578 \POS"a"\ar@{-}@[|(3)]"b"
579 \POS"b"\ar@{-}@[|(3)]"c"
580 \POS"c"\ar@{-}@[|(3)]"a"
581 \POS(1,0.2)*{\bullet},*+!R{\vec y}
582 \end{xy}
584 \intercol=0.48cm
585 \begin{xy}
586 <\intercol,0pt>:<0pt,\intercol>::
587 \POS(-2,-1)="a"*+!U{0}
588 \POS(2,0)="b"*+!L{+}
589 \POS(1,1)="w"*+!DL{\vec w}
590 \POS"a"\ar@{-}@[|(3)]"b"
591 \POS"a"\ar@{-}@[|(3)]"w"
592 \POS"b"\ar@{-}@[|(3)]"w"
593 \POS(1,0.2)*{\bullet},*+!R{\vec y}
594 \end{xy}
596 \begin{xy}
597 <\intercol,0pt>:<0pt,\intercol>::
598 \POS(-2,-1)="a"*+!U{0}
599 \POS(0,2)="c"*+!D{+}
600 \POS(1,1)="w"*+!DL{\vec w}
601 \POS"c"\ar@{-}@[|(3)]"a"
602 \POS"a"\ar@{--}@[|(3)]"w"
603 \POS"c"\ar@{-}@[|(3)]"w"
604 \POS(1,0.2)*{\bullet},*+!R{\vec y}
605 \end{xy}
607 \intercol=0.48cm
608 \begin{xy}
609 <\intercol,0pt>:<0pt,\intercol>::
610 \POS(-2,-1)="a"*+!U{0}
611 \POS(2,0)="b"*+!U{+}
612 \POS(0,2)="c"*+!D{-}
613 \POS"a"\ar@{-}@[|(3)]"b"
614 \POS"b"\ar@{--}@[|(3)]"c"
615 \POS"c"\ar@{-}@[|(3)]"a"
616 \POS(1.5,1.5)*{\bullet},*+!D{\vec y}
617 \end{xy}
619 \intercol=0.48cm
620 \begin{xy}
621 <\intercol,0pt>:<0pt,\intercol>::
622 \POS(-2,-1)="a"*+!U{0}
623 \POS(0,2)="c"*+!D{-}
624 \POS(4,-2)="w"*+!L{\vec w}
625 \POS"c"\ar@{-}@[|(3)]"a"
626 \POS"a"\ar@{-}@[|(3)]"w"
627 \POS"c"\ar@{--}@[|(3)]"w"
628 \POS(1.5,1.5)*{\bullet},*+!D{\vec y}
629 \end{xy}
631 \begin{xy}
632 <\intercol,0pt>:<0pt,\intercol>::
633 \POS(-2,-1)="a"*+!U{0}
634 \POS(2,0)="b"*+!U{+}
635 \POS(4,-2)="w"*+!L{\vec w}
636 \POS"a"\ar@{--}@[|(3)]"b"
637 \POS"a"\ar@{-}@[|(3)]"w"
638 \POS"b"\ar@{--}@[|(3)]"w"
639 \POS(1.5,1.5)*{\bullet},*+!D{\vec y}
640 \end{xy}
642 \intercol=0.48cm
643 \begin{xy}
644 <\intercol,0pt>:<0pt,\intercol>::
645 \POS(-2,-1)="a"*+!U{0}
646 \POS(2,0)="b"*+!U{+}
647 \POS(0,2)="c"*+!D{-}
648 \POS"a"\ar@{--}@[|(3)]"b"
649 \POS"b"\ar@{--}@[|(3)]"c"
650 \POS"c"\ar@{-}@[|(3)]"a"
651 \POS(4.7,-2.5)*{\bullet},*+!R{\vec y}
652 \end{xy}
654 \intercol=0.48cm
655 \begin{xy}
656 <\intercol,0pt>:<0pt,\intercol>::
657 \POS(-2,-1)="a"*+!U{0}
658 \POS(0,2)="c"*+!D{-}
659 \POS(4,-2)="w"*+!L{\vec w}
660 \POS"c"\ar@{-}@[|(3)]"a"
661 \POS"a"\ar@{--}@[|(3)]"w"
662 \POS"c"\ar@{--}@[|(3)]"w"
663 \POS(4.7,-2.5)*{\bullet},*+!R{\vec y}
664 \end{xy}
666 \begin{xy}
667 <\intercol,0pt>:<0pt,\intercol>::
668 \POS(-2,-1)="a"*+!U{0}
669 \POS(2,0)="b"*+!U{+}
670 \POS(4,-2)="w"*+!L{\vec w}
671 \POS"a"\ar@{-}@[|(3)]"b"
672 \POS"a"\ar@{--}@[|(3)]"w"
673 \POS"b"\ar@{--}@[|(3)]"w"
674 \POS(4.7,-2.5)*{\bullet},*+!R{\vec y}
675 \end{xy}
676 \end{align*}
677 \caption{Examples of decompositions in primal space.}
678 \label{fig:primal:examples}
679 \end{figure}
681 To see that there is a $\vec y$ satisfying the above constraints,
682 we need to show that $R \cap S$ is non-empty, with
683 $S = \{ \vec y \mid \sp{{\tilde n}_{i_kj_k}}y > 0 \text{ for all $k$}\}$.
684 It will be easier to show this set is non-empty when the $\vec u_i$ form
685 an orthogonal basis. Applying a non-singular linear transformation $T$
686 does not change the decomposition of $\vec w$ in terms of the $\vec u_i$ (i.e., the
687 $\alpha_i$ remain unchanged), nor does this change
688 any of the scalar products in the constraints that define $R \cap S$
689 (the normals are transformed by $\left(T^{-1}\right)^\T$).
690 Finding a vector $\vec y \in T(R \cap S)$ ensures that
691 $T^{-1}(\vec y) \in R \cap S$.
692 Without loss of generality, we can therefore assume for the purpose of
693 showing that $R \cap S$ is non-empty that
694 the $\vec u_i$ indeed form an orthogonal basis.
696 In the orthogonal basis, we have $\vec b_i^* = \vec u_i$
697 and the corresponding inward normal $\vec N_i$ is either
698 $\vec u_i$ or $-\vec u_i$.
699 Furthermore, each normal of a facet of $S$ of the first type is of the
700 form $\vec {\tilde n}_{i_kj_k} = a_k \vec u_{i_k} - b_k \vec u_{j_k}$, with
701 $a_k, b_k > 0$ and ${i_k} < {j_k}$,
702 while for the second type each normal is of the form
703 $\vec {\tilde n}_{i_kj_k} = -a_k \vec u_{i_k} - b_k \vec u_{j_k}$, with
704 $a_k, b_k > 0$.
705 If $\vec {\tilde n}_{i_kj_k} = a_k \vec u_{i_k} - b_k \vec u_{j_k}$
706 is the normal of a facet of $S$
707 then either
708 $(\vec N_{i_k}, \vec N_{j_k}) = (\vec u_{i_k}, \vec u_{j_k})$
710 $(\vec N_{i_k}, \vec N_{j_k}) = (-\vec u_{i_k}, -\vec u_{j_k})$.
711 Otherwise, the facet would not cut $R$.
712 Similarly,
713 if $\vec {\tilde n}_{i_kj_k} = -a_k \vec u_{i_k} - b_k \vec u_{j_k}$
714 is the normal of a facet of $S$
715 then either
716 $(\vec N_{i_k}, \vec N_{j_k}) = (\vec u_{i_k}, -\vec u_{j_k})$
718 $(\vec N_{i_k}, \vec N_{j_k}) = (-\vec u_{i_k}, \vec u_{j_k})$.
719 Assume now that $R \cap S$ is empty, then there exist
720 $\lambda_k, \mu_i \ge 0$ not all zero
721 such that
722 $\sum_k \lambda_k \vec {\tilde n}_{i_kj_k} + \sum_l \mu_i \vec N_i = \vec 0$.
723 Assume $\lambda_k > 0$ for some facet of the first type.
724 If $\vec N_{j_k} = -\vec u_{j_k}$, then $-b_k$ can only be canceled
725 by another facet $k'$ of the first type with $j_k = i_{k'}$, but then
726 also $\vec N_{j_{k'}} = -\vec u_{j_{k'}}$. Since the $j_k$ are strictly
727 increasing, this sequence has to stop with a strictly positive coefficient
728 for the largest $\vec u_{j_k}$ in this sequence.
729 If, on the other hand, $\vec N_{i_k} = \vec u_{i_k}$, then $a_k$ can only
730 be canceled by the normal of a facet $k'$ of the second kind
731 with $i_k = j_{k'}$, but then
732 $\vec N_{i_{k'}} = -\vec u_{i_{k'}}$ and we return to the first case.
733 Finally, if $\lambda_k > 0$ only for normals of facets of the second type,
734 then either $\vec N_{i_k} = -\vec u_{i_k}$ or $\vec N_{j_k} = -\vec u_{j_k}$
735 and so the coefficient of one of these basis vectors will be strictly
736 negative.
737 That is, the sum of the normals will never be zero and
738 the set $R \cap S$ is non-empty.
740 For each ray $\vec u_j$ of cone $K_i$, i.e., the cone with $\vec u_i$ replaced
741 by $\vec w$, we now need to determine whether the facet not containing this
742 ray is closed or not. We denote the (inward) normal of this cone by
743 $\vec n_{ij}$. Note that cone $K_j$ (if it appears in (\ref{eq:triangulations}),
744 i.e., $\alpha_j \ne 0$) has the same facet opposite $\vec u_i$
745 and its normal $\vec n_{ji}$ will be equal to either $\vec n_{ij}$ or
746 $-\vec n_{ij}$, depending on whether we are dealing with an ``external'' facet,
747 i.e., a facet of $K'$, or an ``internal'' facet.
748 If, on the other hand, $\alpha_j = 0$, then $\vec n_{ij} = \vec n_{0j}$.
749 If $\sp{n_{ij}}y > 0$, then the facet is closed.
750 Otherwise it is open.
751 It follows that the two (or more) occurrences of external facets are either all open
752 or all closed, while for internal facets, exactly one is closed.
754 First consider the facet not containing $\vec u_0 = \vec w$.
755 If $\alpha_i > 0$, then $\vec u_i$ and $\vec w$ are on the same side of the facet
756 and so $\vec n_{i0} = \vec n_{0i}$. Otherwise, $\vec n_{i0} = -\vec n_{i0}$.
757 Second, if $\alpha_j = 0$, then replacing $\vec u_i$ by $\vec w$ does not
758 change the affine hull of the facet and so $\vec n_{ij} = \vec n_{0j}$.
759 Now consider the case that $\alpha_i \alpha_j < 0$, i.e., $\vec u_i$
760 and $\vec u_j$ are on the same side of the hyperplane through the other rays.
761 If we project $\vec u_i$, $\vec u_j$ and $\vec w$ onto a plane orthogonal
762 to the ridge through the other rays, then the possible locations of $\vec w$
763 with respect to $\vec u_i$ and $\vec u_j$ are shown in Figure~\ref{fig:w:same}.
764 If both $\vec n_{0i}$ and $\vec n_{0j}$ are closed then $\vec y$ lies in region~1
765 and therefore $\vec n_{ij}$ (as well as $\vec n_{ji}$) is closed too.
766 Similarly, if both $\vec n_{0i}$ and $\vec n_{0j}$ are open then so is
767 $\vec n_{ij}$. If only one of the facets is closed, then, as explained above,
768 we choose $\vec n_{ij}$ to be open, i.e., we take $\vec y$ to lie in region~3
769 or~5.
770 Figure~\ref{fig:w:opposite} shows the possible configurations
771 for the case that $\alpha_i \alpha_j > 0$.
772 If exactly one of $\vec n_{0i}$ and $\vec n_{0j}$ is closed, then
773 $\vec y$ lies in region~3 or region~5 and therefore $\vec n_{ij}$ is closed iff
774 $\vec n_{0j}$ is closed.
775 Otherwise, as explained above, we choose $\vec n_{ij}$ to be closed if $i < j$.
777 \begin{figure}
778 \intercol=0.7cm
779 \begin{minipage}{0cm}
780 \begin{xy}
781 <\intercol,0pt>:<0pt,\intercol>::
782 \POS(-4,0)="a"\ar@[|(2)]@{-}(4,0)
783 \POS?(0)/\intercol/="b"\POS(2,0)*\xybox{"b"-"a":(0,0)\ar^{\vec n_{0i}}(0,0.75)}
784 \POS(2,0)*{\bullet},*+!U{\vec u_j}
785 \POS(-2,-3)="a"\ar@[|(2)]@{-}(2,3)
786 \POS?(0)/\intercol/="b"\POS(1,1.5)*\xybox{"b"-"a":(0,0)\ar^{\vec n_{0j}}(0,-0.75)}
787 \POS(1,1.5)*{\bullet},*+!R{\vec u_i}
788 \POS(-2,3)="a"\ar@{-}(2,-3)
789 \POS?(0)/\intercol/="b"\POS(1.5,-2.25)
790 *\xybox{"b"-"a":(0,0)\ar_{\vec n_{ji}}^{\vec n_{ij}}(0,+0.75)}
791 \POS(1.5,-2.25)*{\bullet},*+!R{\vec u_0 = \vec w}
792 \POS(0,0)*{\bullet}
793 \POS(3,1.5)*+[o][F]{\scriptstyle 1}
794 \POS(0,2.5)*+[o][F]{\scriptstyle 2}
795 \POS(-3,1.5)*+[o][F]{\scriptstyle 3}
796 \POS(-3,-1.5)*+[o][F]{\scriptstyle 4}
797 \POS(0,-3)*+[o][F]{\scriptstyle 5}
798 \POS(3,-1.5)*+[o][F]{\scriptstyle 6}
799 \end{xy}
800 \end{minipage}
801 \begin{minipage}{0cm}
802 \begin{xy}
803 <\intercol,0pt>:<0pt,\intercol>::
804 \POS(-4,0)="a"\ar@[|(2)]@{-}(4,0)
805 \POS?(0)/\intercol/="b"\POS(2,0)*\xybox{"b"-"a":(0,0)\ar^{\vec n_{0i}}(0,0.75)}
806 \POS(2,0)*{\bullet},*+!U{\vec u_j}
807 \POS(-2,-3)="a"\ar@[|(2)]@{-}(2,3)
808 \POS?(0)/\intercol/="b"\POS(1,1.5)*\xybox{"b"-"a":(0,0)\ar^{\vec n_{0j}}(0,-0.75)}
809 \POS(1,1.5)*{\bullet},*+!R{\vec u_i}
810 \POS(-2,3)="a"\ar@{-}(2,-3)
811 \POS?(0)/\intercol/="b"\POS(-1.5,2.25)
812 *\xybox{"b"-"a":(0,0)\ar_{\vec n_{ji}}^{\vec n_{ij}}(0,+0.75)}
813 \POS(-1.5,2.25)*{\bullet},*+!R{\vec u_0 = \vec w}
814 \POS(0,0)*{\bullet}
815 \POS(3,1.5)*+[o][F]{\scriptstyle 1}
816 \POS(0,2.5)*+[o][F]{\scriptstyle 2}
817 \POS(-3,1.5)*+[o][F]{\scriptstyle 3}
818 \POS(-3,-1.5)*+[o][F]{\scriptstyle 4}
819 \POS(0,-3)*+[o][F]{\scriptstyle 5}
820 \POS(3,-1.5)*+[o][F]{\scriptstyle 6}
821 \end{xy}
822 \end{minipage}
823 \caption{Possible locations of $\vec w$ with respect to $\vec u_i$ and
824 $\vec u_j$, projected onto a plane orthogonal to the other rays, when
825 $\alpha_i \alpha_j < 0$.}
826 \label{fig:w:same}
827 \end{figure}
829 \begin{figure}
830 \intercol=0.7cm
831 \begin{minipage}{0cm}
832 \begin{xy}
833 <\intercol,0pt>:<0pt,\intercol>::
834 \POS(-4,0)="a"\ar@[|(2)]@{-}(4,0)
835 \POS?(0)/\intercol/="b"\POS(2,0)*\xybox{"b"-"a":(0,0)\ar^{\vec n_{0i}}(0,0.75)}
836 \POS(2,0)*{\bullet},*+!U{\vec u_j}
837 \POS(-2,3)="a"\ar@[|(2)]@{-}(2,-3)
838 \POS?(0)/\intercol/="b"\POS(-1,1.5)*\xybox{"b"-"a":(0,0)\ar^{\vec n_{0j}}(0,+0.75)}
839 \POS(-1,1.5)*{\bullet},*+!R{\vec u_i}
840 \POS(-2,-3)="a"\ar@{-}(2,3)
841 \POS?(0)/\intercol/="b"\POS(1.5,2.25)
842 *\xybox{"b"-"a":(0,0)\ar^{\vec n_{ji}}(0,+0.75)
843 \POS(0,0)\ar_{\vec n_{ij}}(0,-0.75)}
844 \POS(1.5,2.25)*{\bullet},*+!L{\vec u_0 = \vec w}
845 \POS(0,0)*{\bullet}
846 \POS(3,1.5)*+[o][F]{\scriptstyle 1}
847 \POS(0,2.5)*+[o][F]{\scriptstyle 2}
848 \POS(-3,1.5)*+[o][F]{\scriptstyle 3}
849 \POS(-3,-1.5)*+[o][F]{\scriptstyle 4}
850 \POS(0,-3)*+[o][F]{\scriptstyle 5}
851 \POS(3,-1.5)*+[o][F]{\scriptstyle 6}
852 \end{xy}
853 \end{minipage}
854 \begin{minipage}{0cm}
855 \begin{xy}
856 <\intercol,0pt>:<0pt,\intercol>::
857 \POS(-4,0)="a"\ar@[|(2)]@{-}(4,0)
858 \POS?(0)/\intercol/="b"\POS(2,0)*\xybox{"b"-"a":(0,0)\ar^{\vec n_{0i}}(0,0.75)}
859 \POS(2,0)*{\bullet},*+!U{\vec u_j}
860 \POS(-2,3)="a"\ar@[|(2)]@{-}(2,-3)
861 \POS?(0)/\intercol/="b"\POS(-1,1.5)*\xybox{"b"-"a":(0,0)\ar^{\vec n_{0j}}(0,+0.75)}
862 \POS(-1,1.5)*{\bullet},*+!R{\vec u_i}
863 \POS(-2,-3)="a"\ar@{-}(2,3)
864 \POS?(0)/\intercol/="b"\POS(-1.5,-2.25)
865 *\xybox{"b"-"a":(0,0)\ar^{\vec n_{ji}}(0,+0.75)
866 \POS(0,0)\ar_{\vec n_{ij}}(0,-0.75)}
867 \POS(-1.5,-2.25)*{\bullet},*+!L{\vec u_0 = \vec w}
868 \POS(0,0)*{\bullet}
869 \POS(3,1.5)*+[o][F]{\scriptstyle 1}
870 \POS(0,2.5)*+[o][F]{\scriptstyle 2}
871 \POS(-3,1.5)*+[o][F]{\scriptstyle 3}
872 \POS(-3,-1.5)*+[o][F]{\scriptstyle 4}
873 \POS(0,-3)*+[o][F]{\scriptstyle 5}
874 \POS(3,-1.5)*+[o][F]{\scriptstyle 6}
875 \end{xy}
876 \end{minipage}
877 \caption{Possible locations of $\vec w$ with respect to $\vec u_i$ and
878 $\vec u_j$, projected onto a plane orthogonal to the other rays, when
879 $\alpha_i \alpha_j > 0$.}
880 \label{fig:w:opposite}
881 \end{figure}
883 The algorithm is summarized in Algorithm~\ref{alg:closed}, where
884 we use the convention that in cone $K_i$, $\vec u_i$ refers to
885 $\vec u_0 = \vec w$.
886 Note that we do not need any of the rays or normals in this code.
887 The only information we need is the closedness of the facets in the
888 original cone and the signs of the $\alpha_i$.
890 \begin{algorithm}
891 \begin{tabbing}
892 next \= next \= next \= \kill
893 if $\alpha_j = 0$ \\
894 \> closed[$K_i$][$\vec u_j$] := closed[$\tilde K$][$\vec u_j$] \\
895 else if $i = j$ \\
896 \> if $\alpha_j > 0$ \\
897 \> \> closed[$K_i$][$\vec u_j$] := closed[$\tilde K$][$\vec u_j$] \\
898 \> else \\
899 \> \> closed[$K_i$][$\vec u_j$] := $\lnot$closed[$\tilde K$][$\vec u_j$] \\
900 else if $\alpha_i \alpha_j > 0$ \\
901 \> if closed[$\tilde K$][$\vec u_i$] = closed[$\tilde K$][$\vec u_j$] \\
902 \> \> closed[$K_i$][$\vec u_j$] := $i < j$ \\
903 \> else \\
904 \> \> closed[$K_i$][$\vec u_j$] := closed[$\tilde K$][$\vec u_j$] \\
905 else \\
906 \> closed[$K_i$][$\vec u_j$] := closed[$\tilde K$][$\vec u_i$] and
907 closed[$\tilde K$][$\vec u_j$]
908 \end{tabbing}
909 \caption{Determine whether the facet opposite $\vec u_j$ is closed in $K_i$.}
910 \label{alg:closed}
911 \end{algorithm}
913 \subsection{Triangulation in primal space}
914 \label{s:triangulation}
916 As in the case for Barvinok's decomposition (Section~\ref{s:decomposition}),
917 we can transform a triangulation of a (closed) cone into closed simple cones
918 into a triangulation of half-open simple cones that fully partitions the
919 original cone, i.e., such that the half-open simple cones do not intersect at their
920 facets.
921 Again, we apply Proposition~\ref{p:inclusion-exclusion} with $\vec y$
922 an interior point of the cone (Section~\ref{s:interior}).
924 \subsection{Multivariate quasi-polynomials as lists of polynomials}
926 There are many definitions for a (univariate) \ai{quasi-polynomial}.
927 \shortciteN{Ehrhart1977} uses a definition based on {\em periodic number}s.
929 \begin{definition}
930 \label{d:periodic:1}
931 A rational \defindex{periodic number} $U(p)$
932 is a function $\ZZ \to \QQ$,
933 such that there exists a \defindex{period} $q$
934 such that $U(p) = U(p')$ whenever $p \equiv p' \mod q$.
935 \end{definition}
937 \begin{definition}
938 \label{d:qp:1}
939 A (univariate)
940 \defindex{quasi-polynomial}\/ $f$ of degree $d$ is
941 a function
943 f(n) = c_d(n) \, n^d + \cdots + c_1(n) \, n + c_0
946 where $c_i(n)$ are rational periodic numbers.
947 I.e., it is a polynomial expression of degree $d$
948 with rational periodic numbers for coefficients.
949 The \defindex{period} of a quasi-polynomial is the \ac{lcm}
950 of the periods of its coefficients.
951 \end{definition}
953 Other authors (e.g., \shortciteNP{Stanley1986})
954 use the following definition of a quasi-polynomial.
955 \begin{definition}
956 \label{d:qp:1:list}
957 A function $f : \ZZ \to \QQ$ is
958 a (univariate) \defindex{quasi-polynomial} of period $q$ if there
959 exists a list of $q$ polynomials $g_i \in \QQ[T]$ for $0 \le i < q$ such
960 that
962 f (s) = g_i(s) \qquad \hbox{if $s \equiv i \mod {q}$}
965 The functions $g_i$ are called the {\em constituents}.
966 \index{constituent}
967 \end{definition}
969 In our implementation, we use Definition~\ref{d:qp:1},
970 but whereas
971 \shortciteN{Ehrhart1977} uses a list of $q$ rational
972 numbers enclosed in square brackets to represent periodic
973 numbers, our periodic numbers are polynomial expressions
974 in fractional parts (Section~\ref{a:data}).
975 These fractional parts naturally extend to multivariate
976 quasi-polynomials.
977 The bracketed (``explicit'') periodic numbers can
978 be extended to multiple variables by nesting them
979 (e.g., \shortciteNP{Loechner1999}).
981 Definition~\ref{d:qp:1:list} could be extended in a similar way
982 by having a constituent for each residue modulo a vector period $\vec q$.
983 However, as pointed out by \citeN{Woods2006personal}, this may not result
984 in the minimum number of constituents.
985 A vector period can be considered as a lattice with orthogonal generators and
986 the number of constituents is equal to the index or determinant of that lattice.
987 By considering more general lattices, we can potentially reduce the number
988 of constituents.
989 \begin{definition}
990 \label{d:qp}
991 A function $f : \ZZ^n \to \QQ$ is
992 a (multivariate) \defindex{quasi-polynomial} of period $L$ if there
993 exists a list of $\det L$ polynomials $g_{\vec i} \in \QQ[T_1,\ldots,T_n]$
994 for $\vec i$ in the fundamental parallelepiped of $L$ such
995 that
997 f (\vec s) = g_{\vec i}(\vec s) \qquad \hbox{if $\vec s \equiv \vec i \mod L$}
1000 \end{definition}
1002 To compute the period lattice from a fractional representation, we compute
1003 the appropriate lattice for each fractional part and then take their intersection.
1004 Recall that the argument of each fractional part is an affine expression
1005 in the parameters $(\sp a p + c)/m$,
1006 with $\vec a \in \ZZ^n$ and $c, m \in \ZZ$.
1007 Such a fractional part is translation invariant over
1008 any (integer) value of $\vec p$
1009 such that $\sp a p + m t = 0$, for some $\vec t \in \ZZ$.
1010 Solving this homogeneous equation over the integers (in our implementation,
1011 we use \PolyLib/'s \ai[\tt]{SolveDiophantine}) gives the general solution
1013 \begin{bmatrix}
1014 \vec p \\ t
1015 \end{bmatrix}
1017 \begin{bmatrix}
1018 U_1 \\ U_2
1019 \end{bmatrix}
1020 \vec x
1021 \qquad\text{for $\vec x \in \ZZ^n$}
1024 The matrix $U_1 \in \ZZ^{n \times n}$ then has the generators of
1025 the required lattice as columns.
1026 The constituents are computed by plugging in each integer point
1027 in the fundamental parallelepiped of the lattice.
1028 These points themselves are computed as explained in Section~\ref{s:fundamental}.
1029 Note that for computing the constituents, it is sufficient to take any
1030 representative of the residue class. For example, we could take
1031 $\vec w^\T = \vec k^\T W$ in the notations of Lemma~\ref{l:fundamental}.
1033 \begin{example}[\shortciteN{Woods2006personal}]
1034 Consider the parametric polytope
1036 P_{s,t}=\{\, x \mid 0 \le x \le (s+t)/2 \,\}
1039 The enumerator of $P_{s,t}$ is
1041 \begin{cases}
1042 \frac s 2 + \frac t 2 + 1 &
1043 \text{if $\begin{bmatrix}s \\ t \end{bmatrix} \in
1044 \begin{bmatrix}
1045 -1 & -2 \\ 1 & 0
1046 \end{bmatrix}
1047 \ZZ^2 +
1048 \begin{bmatrix}
1049 0 \\ 0
1050 \end{bmatrix}
1053 \frac s 2 + \frac t 2 + \frac 1 2 &
1054 \text{if $\begin{bmatrix}s \\ t \end{bmatrix} \in
1055 \begin{bmatrix}
1056 -1 & -2 \\ 1 & 0
1057 \end{bmatrix}
1058 \ZZ^2 +
1059 \begin{bmatrix}
1060 -1 \\ 0
1061 \end{bmatrix}
1064 \end{cases}
1066 The corresponding output of \ai[\tt]{barvinok\_enumerate} is
1067 \begin{verbatim}
1068 s + t >= 0
1069 1 >= 0
1071 Lattice:
1072 [[-1 1]
1073 [-2 0]
1075 [0 0]
1076 ( 1/2 * s + ( 1/2 * t + 1 )
1078 [-1 0]
1079 ( 1/2 * s + ( 1/2 * t + 1/2 )
1081 \end{verbatim}
1082 \end{example}
1084 \subsection{Left inverse of an affine embedding}
1085 \label{s:inverse}
1087 We often map a polytope onto a lower dimensional space to remove possible
1088 equalities in the polytope. These maps are typically represented
1089 by the inverse, mapping the coordinates $\vec x'$ of the lower-dimensional
1090 space to the coordinates $\vec x$ of (an affine subspace of) the original space,
1091 i.e.,
1093 \begin{bmatrix}
1094 \vec x \\ 1
1095 \end{bmatrix}
1097 \begin{bmatrix}
1098 T & \vec v \\ \vec 0^\T & 1
1099 \end{bmatrix}
1100 \begin{bmatrix}
1101 \vec x' \\ 1
1102 \end{bmatrix}
1105 where, as usual in \PolyLib/, we work with homogeneous coordinates.
1106 To obtain the transformation that maps the coordinates of the original
1107 space to the coordinates of the lower dimensional space,
1108 we need to compute the \ai{left inverse} of the above \ai{affine embedding},
1109 i.e., an $A$, $\vec b$ and $d$ such that
1112 \begin{bmatrix}
1113 \vec x' \\ 1
1114 \end{bmatrix}
1116 \begin{bmatrix}
1117 A & \vec b \\ \vec 0^\T & d
1118 \end{bmatrix}
1119 \begin{bmatrix}
1120 \vec x \\ 1
1121 \end{bmatrix}
1124 To compute this left inverse, we first compute the
1125 (right) \indac{HNF} of T,
1127 \begin{bmatrix}
1128 U_1 \\ U_2
1129 \end{bmatrix}
1132 \begin{bmatrix}
1133 H \\ 0
1134 \end{bmatrix}
1137 The left inverse is then simply
1139 \begin{bmatrix}
1140 d H^{-1}U_1 & -d H^{-1} \vec v \\ \vec 0^\T & d
1141 \end{bmatrix}
1144 We often also want a description of the affine subspace that is the range
1145 of the affine embedding and this is given by
1147 \begin{bmatrix}
1148 U_2 & - U_2 \vec v \\ \vec 0^T & 1
1149 \end{bmatrix}
1150 \begin{bmatrix}
1151 \vec x \\ 1
1152 \end{bmatrix}
1154 \vec 0
1157 This computation is implemented in \ai[\tt]{left\_inverse}.
1159 \subsection{Integral basis of the orthogonal complement of a linear subspace}
1160 \label{s:completion}
1162 Let $M_1 \in \ZZ^{m \times n}$ be a basis of a linear subspace.
1163 We first extend $M_1$ with zero rows to obtain a square matrix $M'$
1164 and then compute the (left) \indac{HNF} of $M'$,
1166 \begin{bmatrix}
1167 M_1 \\ 0
1168 \end{bmatrix}
1170 \begin{bmatrix}
1171 H & 0 \\ 0 & 0
1172 \end{bmatrix}
1173 \begin{bmatrix}
1174 Q_1 \\ Q_2
1175 \end{bmatrix}
1178 The rows of $Q_2$ span the orthogonal complement of the given subspace.
1179 Since $Q_2$ can be extended to a unimodular matrix, these rows form
1180 an integral basis.
1182 If the entries on the diagonal of $H$ are all $1$ then $M_1$
1183 can be extended to a unimodular matrix, by concatenating $M_1$ and $Q_2$.
1184 The resulting matrix is unimodular, since
1186 \begin{bmatrix}
1187 M_1 \\ Q_2
1188 \end{bmatrix}
1190 \begin{bmatrix}
1191 H & 0 \\ 0 & I_{n-m,n-m}
1192 \end{bmatrix}
1193 \begin{bmatrix}
1194 Q_1 \\ Q_2
1195 \end{bmatrix}
1198 This method for extending a matrix of which
1199 only a few lines are known to a \ai{unimodular matrix}
1200 is more general than the method described by \shortciteN{Bik1996PhD},
1201 which only considers extending a matrix given by a single row.
1203 \subsection{Ensuring a polyhedron has only revlex-positive rays}
1204 \label{s:revlexpos}
1206 The \ai[\tt]{barvinok\_series\_with\_options} function and all
1207 further \ai[\tt]{gen\_fun} manipulations assume that the effective
1208 parameter domain has only \ai{revlex-positive} rays.
1209 When used to computer \rgf/s, the \ai[\tt]{barvinok\_enumerate}
1210 application will therefore transform the effective parameter domain
1211 of a problem if it has revlex-negative rays.
1212 It will then not compute the generating function
1214 f(\vec x) = \sum_{\vec p \in \ZZ^m} \#(P_{\vec p} \cap \ZZ^d) \, x^{\vec p}
1219 g(\vec z) = \sum_{\vec p' \in \ZZ^n}
1220 \#(P_{T \vec p' + \vec t} \cap \ZZ^d) \, x^{\vec p'}
1222 instead, where $\vec p = T \vec p' + \vec t$,
1223 with $T \in \ZZ^{m \times n}$ and $\vec t \in \ZZ^m$, is an affine transformation
1224 that maps the transformed parameter space back to the original parameter space.
1226 First assume that the parameter domain does not contain any lines and
1227 that there are no equalities in the description of $P_{\vec p}$ that force
1228 the values of $\vec p$ for which $P_{\vec p}$ contains integer points
1229 to lie on a non-standard lattice.
1230 Let the effective parameter domain be given as
1232 \{\, \vec p \mid A \vec p + \vec c \ge \vec 0 \,\}
1234 where $A \in \ZZ^{s \times d}$ of row rank $d$;
1235 otherwise the effective parameter domain would contain a line.
1236 Let $H$ be the (left) \indac{HNF} of $A$, i.e.,
1238 A = H Q
1241 with $H$ lower-triangular with positive diagonal elements and
1242 $Q$ unimodular.
1243 Let $\tilde Q$ be the matrix obtained from $Q$ by reversing its rows,
1244 and, similarly, $\tilde H$ from $H$ by reversing the columns.
1245 After performing the transformation
1246 $\vec p' = \tilde Q \vec p$, i.e.,
1247 $\vec p = \tilde Q^{-1} \vec p'$, the transformed parameter domain
1248 is given by
1250 \{\, \vec p' \mid A \tilde Q^{-1} \vec p' + \vec c \ge \vec 0 \,\}
1254 \{\, \vec p' \mid \tilde H \vec p' + \vec c \ge \vec 0 \,\}
1257 The first constraint of this domain is
1258 $h_{11} p'_m + c_1 \ge 0$. A ray with non-zero final coordinate
1259 therefore has a positive final coordinate.
1260 Similarly, the second constraint is
1261 $h_{22} p'_{m-1} + h_{21} p'_m + c_2 \ge 0$.
1262 A ray with zero $n$th coordinate, but non-zero $n-1$st coordinate,
1263 will therefore have a positive $n-1$st coordinate.
1264 Continuing this reasoning, we see that all rays in the transformed
1265 domain are revlex-positive.
1267 If the parameter domain does contains lines, but is not restricted
1268 to a non-standard lattice, then the number of points in the parametric
1269 polytope is invariant over a translation along the lines.
1270 It is therefore sufficient to compute the number of points in the
1271 orthogonal complement of the linear subspace spanned by the lines.
1272 That is, we apply a prior transformation that maps a reduced parameter
1273 domain to this subspace,
1275 \vec p = L^\perp \vec p' =
1276 \begin{bmatrix}
1277 L & L^\perp
1278 \end{bmatrix}
1279 \begin{bmatrix}
1280 0 \\ I
1281 \end{bmatrix}
1282 \vec p'
1285 where $L$ has the lines as columns, and $L^\perp$ an integral basis
1286 for the orthogonal complement (Section~\ref{s:completion}).
1287 Note that the inverse transformation
1289 \vec p' =
1290 L^{-\perp}
1291 \vec p =
1292 \begin{bmatrix}
1293 0 & I
1294 \end{bmatrix}
1295 \begin{bmatrix}
1296 L & L^\perp
1297 \end{bmatrix}^{-1}
1298 \vec p
1300 has integral coefficients since $L^\perp$ can be extended to a unimodular matrix.
1302 If the parameter values $\vec p$ for which $P_{\vec p}$ contains integer points
1303 are restricted to a non-standard lattice, we first replace the parameters
1304 by a different set of parameters that lie on the standard lattice
1305 through ``\ai{parameter compression}''\shortcite{Meister2004PhD},
1307 \vec p = C \vec p'
1310 The (left) inverse of $C$ can be computes as explained in
1311 Section~\ref{s:inverse}, giving
1313 \vec p' = C^{-L} \vec p
1316 We have to be careful to only apply this transformation when
1317 both the equalities computed in Section~\ref{s:inverse} are satisfied
1318 and some additional divisibility constraints.
1319 In particular if $\vec a^\T/d$ is a row of $C^{-L}$, with $\vec a \in \ZZ^{n'}$
1320 and $d \in \ZZ$, the transformation can only be applied to parameter values
1321 $\vec p$ such that $d$ divides $\sp a p$.
1323 The complete transformation is given by
1325 \vec p = C L^\perp \hat Q^{-1} \vec p'
1329 \vec p' = \hat Q L^{-\perp} C^{-L} \vec p
1333 \subsection{Parametric Volume Computation}
1335 The \ai{volume} of a (parametric) polytope can serve as an approximation
1336 for the number of integer points in the polytope.
1337 We basically follow the description of~\shortciteN{Rabl2006} here, except that we
1338 focus on volume computation for {\em linearly}
1339 parametrized polytopes, which we exploit to determine the sign
1340 of the determinants we compute, as explained below.
1342 Note first that
1343 the vertices of a linearly parametrized polytope are affine expressions
1344 in the parameters that may be valid only in parts (chambers)
1345 of the parameter domain.
1346 Since the volume computation is based on the (active) vertices, we perform
1347 the computation in each chamber separately.
1348 Also note that since the vertices are affine expressions, it is
1349 easy to check whether they belong to a facet.
1351 The volume of a $d$-simplex, i.e., a $d$-dimensional polytope with
1352 $d+1$ vertices, is relatively easy to compute.
1353 In particular, if $\vec v_i(\vec p)$, for $0 \le i \le d$,
1354 are the (parametric) vertices
1355 of the simplex $P$ then
1356 \begin{equation}
1357 \label{eq:volume}
1358 \vol P =
1359 \frac 1 {d!}
1360 \left|
1361 \det
1362 \begin{bmatrix}
1363 v_{11}(\vec p) - v_{01}(\vec p) &
1364 v_{12}(\vec p) - v_{02}(\vec p) &
1365 \ldots &
1366 v_{1d}(\vec p) - v_{0d}(\vec p)
1368 v_{21}(\vec p) - v_{01}(\vec p) &
1369 v_{22}(\vec p) - v_{02}(\vec p) &
1370 \ldots &
1371 v_{2d}(\vec p) - v_{0d}(\vec p)
1373 \vdots & \vdots & \ddots & \vdots
1375 v_{d1}(\vec p) - v_{01}(\vec p) &
1376 v_{d2}(\vec p) - v_{02}(\vec p) &
1377 \ldots &
1378 v_{dd}(\vec p) - v_{0d}(\vec p)
1379 \end{bmatrix}
1380 \right|.
1381 \end{equation}
1383 If $P$ is not a simplex, i.e., $N > d+1$, with $N$ the number of
1384 vertices of $P$, then the standard way of computing the volume of $P$
1385 is to first {\em triangulate} $P$, i.e., subdivide $P$ into simplices,
1386 and then to compute and sum the volumes of the resulting simplices.
1387 One way of computing a triangulation is to
1388 compute the \ai{barycenter}
1390 \frac 1 N \sum_i \vec v_i(\vec p)
1392 of $P$
1393 and to perform a subdivision by computing the convex hulls
1394 of the barycenter with each of the facets of $P$.
1395 If a given facet of $P$ is itself a simplex, then this convex hull
1396 is also a simplex. Otherwise the facet is further subdivided.
1397 This recursive process terminates as every $1$-dimensional polytope
1398 is a simplex.
1400 The triangulation described above is known as
1401 the boundary triangulation~\shortcite{Bueler2000exact} and is used
1402 by \shortciteN{Rabl2006} in his implementation.
1403 The Cohen-Hickey triangulation~\shortcite{Cohen1979volumes,Bueler2000exact}
1404 is a much more efficient variation and uses one of the vertices
1405 instead of the barycenter. The facets incident on the vertex
1406 do not have to be considered in this case because the resulting subpolytopes
1407 would have zero volume.
1408 Another possibility is to use a
1409 ``lifting'' triangulation~\shortcite{Lee1991,DeLoera1995}.
1410 In this triangulation, each vertex is assigned a (random) ``height'' in
1411 an extra dimension.
1412 The projection of the ``lower envelope'' of the resulting polytope onto
1413 the original space results in a subdivision, which is a triangulation
1414 with very high probability.
1416 A complication with the lifting triangulation is that the constraint system
1417 of the lifted polytope will in general not be linearly parameterized,
1418 even if the original polytope is.
1419 It is, however, sufficient to perform the triangulation for a particular
1420 value of the parameters inside the chamber since the parametric polytope
1421 has the same combinatorial structure throughout the chamber.
1422 The triangulation obtained for the instantiated vertices can then
1423 be carried over to the corresponding parametric vertices.
1424 We only need to be careful to select a value for the parameters that
1425 does not lie on any facet of the chambers. On these chambers, some
1426 of the vertices may coincide.
1427 For linearly parametrized polytopes, it is easy to find a parameter
1428 point in the interior of a chamber, as explained in Section~\ref{s:interior}.
1429 Note that this point need not be integer.
1431 A direct application of the above algorithm, using any of the triangulations,
1432 would yield for each chamber
1433 a volume expressed as the sum of the absolute values of polynomials in
1434 the parameters. To remove the absolute value, we plug in a particular
1435 value of the parameters (not necessarily integer)
1436 belonging to the given chamber for which we know that the volume is non-zero.
1437 Again, it is sufficient to take any point in the interior of the chamber.
1438 The sign of the resulting value then determines the sign of the whole
1439 polynomial since polynomials are continuous functions and will not change
1440 sign without passing through zero.
1442 \subsection{Maclaurin series division}
1443 \label{s:division}
1445 If $P(t)$ and $Q(t)$ are two Maclaurin series
1446 \begin{align*}
1447 P(t) & = a_0 + a_1 t + a_2 t^2 + \cdots \\
1448 Q(t) & = b_0 + b_1 t + b_2 t^2 + \cdots
1450 \end{align*}
1451 then, as outlined by \shortciteN[241--247]{Henrici1974},
1452 we can compute the coefficients $c_l$ in
1454 \frac{P(t)}{Q(t)} =: c_0 + c_1 t + c_2 t^2 + \cdots
1456 by applying the recurrence relation
1458 c_l = \frac 1 {b_0} \left( a_l - \sum_{i=1}^l b_i c_{l-i} \right)
1461 To avoid dealing with denominators, we can also compute
1462 $d_l = b_0^{l+1} c_l$ instead as
1464 d_l = b_0^l a_l - \sum_{i=1}^l b_0^{i-1} b_i c_{l-i}
1467 The coefficients $c_l$ can then be directly read off as
1469 c_l = \frac{d_l}{b_0^{l+1}}
1473 \subsection{Specialization through exponential substitution}
1475 This section draws heavily from \shortciteN{Koeppe2006experiments}.
1477 After computing the \rgf/ of a polytope,
1478 \begin{equation}
1479 \label{eq:rgf}
1480 f(\vec x)=
1481 \sum_{i\in I}\alpha_i
1482 \frac{\sum_{k=1}^{r} \vec x^{\vec w_{ik} }}
1483 {\prod_{j=1}^{d}\left(1-\vec x^{\vec b_{ij}}\right)}
1485 \end{equation}
1486 the number of lattice points in the polytope can be obtained
1487 by evaluating $f(\vec 1)$. Since $\vec 1$ is a pole of each
1488 term, we need to compute the constant term in the Laurent expansions
1489 of each term in~\eqref{eq:rgf} about $\vec 1$.
1490 Since it is easier to work with univariate series, a substitution is usually
1491 applied, either a \ai{polynomial substitution}
1493 \vec x = (1+t)^{\vec \lambda}
1496 as implemented in \LattE/ \shortcite{latte1.1},
1497 or an \ai{exponential substitution} (see, e.g., \shortciteNP{Barvinok1999}),
1499 \vec x = e^{t \vec \lambda}
1502 as implemented in \LattEmk/ \shortcite{latte-macchiato}.
1503 In each case, $\vec \lambda \in \ZZ^d$ is a vector that is not orthogonal
1504 to any of the $\vec b_{ij}$.
1505 Both substitutions also transform the problem of computing the
1506 constant term in the Laurent expansions about $\vec x = \vec 1$
1507 to that of computing the constant term in the
1508 Laurent expansions about $t = 0$.
1510 Consider now one of the terms in~\eqref{eq:rgf},
1512 g(t) =
1513 \frac{\sum_{k=1}^{r} e^{a_k t}}
1514 {\prod_{j=1}^{d}\left(1-e^{c_j t}\right)}
1517 with $a_k = \sp{w_{ik}}{\lambda}$ and $c_j = \sp{b_{ij}}{\lambda}$.
1518 We rewrite this equation as
1520 g(t) =
1521 (-1)^d
1522 \frac{\sum_{k=1}^{r} e^{a_k t}}
1523 {t^d \prod_{j=1}^d c_j}
1524 \prod_{j=1}^d \frac{-c_j t}
1525 {1-e^{c_j t}}
1528 The second factor is analytic in a neighborhood of the origin
1529 $x = c_1 = \cdots = c_d = 0$ and therefore has a Taylor series expansion
1530 \begin{equation}
1531 \label{eq:todd}
1532 \prod_{j=1}^d \frac{-c_j t}
1533 {1-e^{c_j t}}
1535 \sum_{m=0}^{\infty} \todd_m(-c_1, \ldots, -c_d) t^m
1537 \end{equation}
1538 where $\todd_m$ is a homogeneous polynomial of degree $m$ called
1539 the $m$-th \ai{Todd polynomial}~\cite{Barvinok1999}.
1540 Also expanding the numerator in the first factor, we find
1542 g(t) = \frac{(-1)^d}{t^d \prod_{j=1}^d c_j}
1543 \left(
1544 \sum_{n=0}^{\infty}\frac{\sum_{k=1}^{r} a_k^n}{n!}
1545 \right)
1546 \left(
1547 \sum_{m=0}^{\infty} \todd_m(-c_1, \ldots, -c_d) t^m
1548 \right)
1551 with constant term
1552 \begin{multline}
1553 \label{eq:todd:constant}
1554 \frac{(-1)^d}{t^d \prod_{j=1}^d c_j}
1555 \left(\sum_{i=0}^d \frac{\sum_{k=1}^{r} a_k^i}{i!}
1556 \todd_{d-i}(-c_1, \ldots, -c_d)\right)t^d
1557 = \\
1558 \frac{(-1)^d}{\prod_{j=1}^d c_j}
1559 \sum_{i=0}^d \frac{\sum_{k=1}^{r} a_k^i}{i!} \todd_{d-i}(-c_1, \ldots, -c_d)
1561 \end{multline}
1562 To compute the first $d+1$ terms in the Taylor series~\eqref{eq:todd},
1563 we write down the truncated Taylor series
1565 \frac{e^t -1}t \equiv
1566 \sum_{i=0}^d \frac 1{(i+1)!} t^i \equiv
1567 \frac 1 {(d+1)!} \sum_{i=0}^d \frac{(d+1)!}{(i+1)!} t^i
1568 \mod t^{d+1}
1571 where we have
1573 \frac 1 {(d+1)!} \sum_{i=0}^d \frac{(d+1)!}{(i+1)!} t^i
1574 \in \frac 1{(d+1)!} \ZZ[t]
1577 Computing the reciprocal as explained in Section~\ref{s:division},
1578 we find
1579 \begin{equation}
1580 \label{eq:t-exp-1}
1581 \frac{t}{e^t-1} = \frac 1{\frac{e^t -1}t}
1582 \equiv (d+1)! \frac 1{\sum_{i=0}^d \frac{(d+1)!}{(i+1)!} t^i}
1583 =: \sum_{i=0}^d b_i t^i
1585 \end{equation}
1586 Note that the constant term of the denominator is $1/(d+1)!$.
1587 The denominators of the quotient are therefore $((d+1)!)^{i+1}/(d+1)!$.
1588 Also note that the $b_i$ are independent of the generating function
1589 and can be computed in advance.
1590 An alternative way of computing the $b_i$ is to note that
1592 \frac{t}{e^t-1} = \sum_{i=0}^\infty B_i \frac{t^i}{i!}
1595 with $B_i = i! \, b_i$ the \ai{Bernoulli number}s, which can be computed
1596 using the recurrence~\eqref{eq:Bernoulli} (see Section~\ref{s:nested}).
1598 Substituting $t$ by $c_j t$ in~\eqref{eq:t-exp-1}, we have
1600 \frac{-c_j t}{1-e^{c_j t}} = \sum_{i=0}^d b_i c_j^i t^i
1603 Multiplication of these truncated Taylor series for each $c_j$
1604 results in the first $d+1$ terms of~\eqref{eq:todd},
1606 \sum_{m=0}^{d} \todd_m(-c_1, \ldots, -c_d) t^m
1608 \sum_{m=0}^{d} \frac{\beta_m}{((d+1)!)^m} t^m
1611 from which
1612 it is easy to compute the constant term~\eqref{eq:todd:constant}.
1613 Note that this convolution can also be computed without the use
1614 of rational coefficients,
1616 \frac{(-1)^d}{\prod_{j=1}^d c_j}
1617 \sum_{i=0}^d \frac{\alpha_i}{i!} \frac{\beta_{d-i}}{((d+1)!)^{d-i}}
1619 \frac{(-1)^d}{((d+1)!)^d\prod_{j=1}^d c_j}
1620 \sum_{i=0}^d \left(\frac{((d+1)!)^i}{i!}\alpha_i\right) \beta_{d-i}
1623 with $\alpha_i = \sum_{k=1}^{r} a_k^i$.
1625 \begin{example}
1626 Consider the \rgf/
1627 \begin{multline*}
1628 \f T x =
1629 \frac{x_1^2}{(1-x_1^{-1})(1-x_1^{-1}x_2)}
1631 \frac{x_2^2}{(1-x_2^{-1})(1-x_1 x_2^{-1})}
1632 + {} \\
1633 \frac1{(1-x_1)(1-x_2)}
1634 \end{multline*}
1635 from \shortciteN[Example~39]{Verdoolaege2005PhD}.
1636 Since this is a 2-dimensional problem, we first compute the first
1637 3 Todd polynomials (evaluated at $-1$),
1639 \frac{e^t -1}t \equiv
1640 1 + \frac 1 2 t + \frac 1 7 t^2 =
1641 \frac 1 6
1642 \begin{bmatrix}
1643 6 & 3 & 1
1644 \end{bmatrix}
1648 \frac t{e^t -1} \equiv
1649 \begin{bmatrix}
1650 \displaystyle\frac{-1}{1} & \displaystyle\frac{3}{6} & \displaystyle\frac{-3}{36}
1651 \end{bmatrix}
1654 where we represent each truncated power series by a vector of its
1655 coefficients.
1656 The vector $\vec\lambda = (1, -1)$ is not
1657 orthogonal to any of the rays, so we can use the substitution
1658 $\vec x = e^{(1, -1)t}$
1659 and obtain
1661 \frac{e^{2t}}{(1-e^{-t})(1-e^{-2t})}
1663 \frac{e^{-2t}}{(1-e^{t})(1-e^{2t})}
1665 \frac1{(1-e^{t})(1-e^{-t})}
1668 We have
1669 \begin{align*}
1670 \frac{t}{1-e^{- t}} & =
1671 \begin{bmatrix}
1672 \displaystyle\frac{-1}{1} & \displaystyle\frac{-3}{6} & \displaystyle\frac{-3}{36}
1673 \end{bmatrix}
1675 \frac{2t}{1-e^{-2 t}} & =
1676 \begin{bmatrix}
1677 \displaystyle\frac{-1}{1} & \displaystyle\frac{-6}{6} & \displaystyle\frac{-12}{36}
1678 \end{bmatrix}
1680 \frac{-t}{1-e^{t}} & =
1681 \begin{bmatrix}
1682 \displaystyle\frac{-1}{1} & \displaystyle\frac{3}{6} & \displaystyle\frac{-3}{36}
1683 \end{bmatrix}
1685 \frac{-2t}{1-e^{2t}} & =
1686 \begin{bmatrix}
1687 \displaystyle\frac{-1}{1} & \displaystyle\frac{6}{6} & \displaystyle\frac{-12}{36}
1688 \end{bmatrix}
1690 \end{align*}
1691 The first term in the \rgf/ evaluates to
1692 \begin{align*}
1694 \frac 1{-1 \cdot -2}
1695 \begin{bmatrix}
1696 \displaystyle\frac{1}{1} & \displaystyle\frac{2}{1} & \displaystyle\frac{4}{2}
1697 \end{bmatrix}
1699 \left(
1700 \begin{bmatrix}
1701 \displaystyle\frac{-1}{1} & \displaystyle\frac{-3}{6} & \displaystyle\frac{-3}{36}
1702 \end{bmatrix}
1703 \begin{bmatrix}
1704 \displaystyle\frac{-1}{1} & \displaystyle\frac{-6}{6} & \displaystyle\frac{-12}{36}
1705 \end{bmatrix}
1706 \right)
1708 = {} &
1709 \frac 1{2}
1710 \begin{bmatrix}
1711 \displaystyle\frac{1}{1} & \displaystyle\frac{2}{1} & \displaystyle\frac{4}{2}
1712 \end{bmatrix}
1714 \begin{bmatrix}
1715 \displaystyle\frac{1}{1} & \displaystyle\frac{9}{6} & \displaystyle\frac{33}{36}
1716 \end{bmatrix}
1718 = {} &
1719 \frac 1{72}
1720 \begin{bmatrix}
1721 1 & 2 \cdot 6 & 4 \cdot 18
1722 \end{bmatrix}
1724 \begin{bmatrix}
1725 1 & 9 & 33
1726 \end{bmatrix}
1727 = \frac {213}{72} = \frac{71}{24}
1729 \end{align*}
1730 Due to symmetry, the second term evaluates to the same value,
1731 while for the third term we find
1733 \frac{1}{-1\cdot 1 \cdot 36}
1734 \begin{bmatrix}
1735 1 & 0 \cdot 6 & 0 \cdot 18
1736 \end{bmatrix}
1738 \begin{bmatrix}
1739 1 & 0 & -3
1740 \end{bmatrix}
1742 \frac{-3}{-36} = \frac 1{12}
1745 The sum is
1747 \frac{71}{24} + \frac{71}{24} + \frac 1{12} = 6
1750 \end{example}
1752 Note that the run-time complexities of polynomial and exponential
1753 substitution are basically the same. The experiments of
1754 \citeN{Koeppe2006primal} are somewhat misleading in this respect
1755 since the polynomial substitution (unlike the exponential
1756 substitution) had not been optimized to take full
1757 advantage of the stopped Barvinok decomposition.
1758 For comparison, \autoref{t:hickerson} shows running times
1759 for the same experiments of that paper, but using
1760 barvinok version \verb+barvinok-0.23-47-gaa9024e+
1761 on an Athlon MP 1500+ with 512MiB internal memory.
1762 This machine appears to be slightly slower than the
1763 machine used in the experiments of \citeN{Koeppe2006primal}
1764 as computing {\tt hickerson-14} using the dual decomposition
1765 with polynomial substitution an maximal index 1
1766 took 2768 seconds on this machine using \LattEmk/.
1767 At this stage, it is not clear yet why the number of
1768 cones in the dual decomposition of {\tt hickerson-13}
1769 differs from that of \LattE/~\shortcite{latte1.1} and
1770 \LattEmk/~\cite{latte-macchiato}.
1771 We conclude from \autoref{t:hickerson} that (our implementation of)
1772 the exponential substitution is always slightly faster than
1773 (our implementation of) the polynomial substitution.
1774 The optimal maximal index for these examples is about 500,
1775 which agrees with the experiments of \citeN{Koeppe2006primal}.
1777 \begin{table}
1778 \begin{center}
1779 \begin{tabular}{rrrrrrr}
1780 \hline
1782 \multicolumn{3}{c}{Dual decomposition} &
1783 \multicolumn{3}{c}{Primal decomposition}
1786 & \multicolumn{2}{c}{Time (s)} &
1787 & \multicolumn{2}{c}{Time (s)}
1789 \cline{3-4}
1790 \cline{6-7}
1791 Max.\ index & Cones & Poly & Exp & Cones & Poly & Exp \\
1792 \hline
1793 \multicolumn{7}{c}{{\tt hickerson-12}}
1795 \hline
1796 1 & 11625 & 9.24 & 8.90 & 7929 & 4.80 & 4.55
1798 10 & 4251 & 4.32 & 4.19 & 803 & 0.66 & 0.62
1800 100 & 980 & 1.42 & 1.35 & 84 & 0.13 & 0.12
1802 200 & 550 & 1.00 & 0.92 & 76 & 0.12 & 0.12
1804 300 & 474 & 0.93 & 0.86 & 58 & 0.12 & 0.10
1806 500 & 410 & 0.90 & 0.83 & 42 & 0.10 & 0.10
1808 1000 & 130 & 0.42 & 0.38 & 22 & {\bf 0.10} & {\bf 0.07}
1810 2000 & 10 & {\bf 0.10} & {\bf 0.10} & 22 & 0.10 & 0.09
1812 5000 & 7 & 0.12 & 0.11 & 7 & 0.12 & 0.10
1814 \hline
1815 \multicolumn{7}{c}{{\tt hickerson-13}}
1817 \hline
1818 1 & 494836 & 489 & 463 & 483507 & 339 & 315
1820 10 & 296151 & 325 & 309 & 55643 & 51 & 48
1822 100 & 158929 & 203 & 192 & 9158 & 11 & 10
1824 200 & 138296 & 184 & 173 & 6150 & 9 & 8
1826 300 & 110438 & 168 & 157 & 4674 & 8 & 7
1828 500 & 102403 & 163 & 151 & 3381 & {\bf 8} & {\bf 7}
1830 1000 & 83421 & {\bf 163} & {\bf 149} & 2490 & 8 & 7
1832 2000 & 77055 & 170 & 153 & 1857 & 10 & 8
1834 5000 & 57265 & 246 & 211 & 1488 & 13 & 11
1836 10000 & 50963 & 319 & 269 & 1011 & 26 & 21
1838 \hline
1839 \multicolumn{7}{c}{{\tt hickerson-14}}
1841 \hline
1842 1 & 1682743 & 2171 & 2064 & 552065 & 508 & 475
1844 10 & 1027619 & 1453 & 1385 & 49632 & 62 & 59
1846 100 & 455474 & 768 & 730 & 8470 & 14 & 13
1848 200 & 406491 & 699 & 661 & 5554 & 11 & 10
1850 300 & 328340 & 627 & 590 & 4332 & 11 & 9
1852 500 & 303566 & 605 & 565 & 3464 & {\bf 11} & {\bf 9}
1854 1000 & 232626 & {\bf 581} & {\bf 532} & 2384 & 12 & 10
1856 2000 & 195368 & 607 & 545 & 1792 & 14 & 12
1858 5000 & 147496 & 785 & 682 & 1276 & 19 & 16
1860 10000 & 128372 & 966 & 824 & 956 & 29 & 23
1862 \hline
1863 \end{tabular}
1864 \caption{Timing results of dual and primal decomposition with
1865 polynomial or exponential substitution on the Hickerson examples}
1866 \label{t:hickerson}
1867 \end{center}
1868 \end{table}
1870 \subsection{Approximate Enumeration using Nested Sums}
1871 \label{s:nested}
1873 If $P \in \QQ^d$ is a polyhedron and $p(\vec x) \in \QQ[\vec x]$ is a
1874 polynomial and we want to sum $p(\vec x)$ over all integer values
1875 of (a subset of) the variables $\vec x$, then we can do this incrementally
1876 by taking a variable $x_1$ with lower bound $L(\vec{\hat x})$
1877 and upper bound $U(\vec{\hat x})$, with $\vec{\hat x} = (x_2, \ldots, x_d)$,
1878 and computing
1879 \begin{equation}
1880 \label{eq:nested:sum}
1881 Q(\vec{\hat x}) = \sum_{x_1 = L(\vec{\hat x})}^{U(\vec{\hat x})} p(\vec x)
1883 \end{equation}
1884 Since $P$ is a polytope, the lower bound is a maximum of affine expressions
1885 in the remaining variables, while the upper bound is a minimum of such expressions.
1886 If the coefficients in these expressions are all integer, then we can
1887 compute $Q(\vec{\hat x})$ exactly as a piecewise polynomial using formulas
1888 for sums of powers, as proposed by, e.g.,
1889 \shortciteN{Tawbi1994,Sakellariou1997sums,VanEngelen2004}.
1890 If some of the coefficients are not integer, we can apply the same formulas
1891 to obtain an approximation, which can is some cases be shown
1892 to be an overapproximation~\shortcite{VanEngelen2004}.
1893 Note that if we take the initial polynomial to be the constant $1$, then
1894 this gives us a method for computing an approximation of the number
1895 of integer points in a (parametric) polytope.
1897 The first step is to compute the chamber decomposition of $P$ when viewed
1898 as a 1-dimensional parametric polytope. That is, we need to partition
1899 the projection of $P$ onto the remaining variables into polyhedral cells
1900 such that in each cell, both the upper and the lower bound are described
1901 by a single affine expression. Basically, for each pair of lower and upper
1902 bound, we compute the cell where the chosen lower bound is (strictly)
1903 smaller than all other lower bounds and similarly for the upper bound.
1905 For any given pair of lower and upper bound $(l(\vec {\hat x}), u(\vec{\hat x}))$,
1906 the formula~\eqref{eq:nested:sum} is computed for each monomial of $p(\vec x)$
1907 separately. For the constant term $\alpha_0$, we have
1909 \sum_{x_1 = l(\vec {\hat x})}^{u(\vec{\hat x})} \alpha_0(\vec{\hat x})
1910 = \alpha_0(\vec{\hat x}) \left(u(\vec{\hat x}) - l(\vec {\hat x}) + 1\right)
1913 For the higher degree monomials, we use the formula
1914 \begin{equation}
1915 \label{eq:summation}
1916 \sum_{k=0}^{m-1} k^n = {1\over{n+1}}\sum_{k=0}^n{n+1\choose{k}} B_k m^{n+1-k}
1917 =: S_n(m)
1919 \end{equation}
1920 with $B_i$ the \ai{Bernoulli number}s, which can be computed
1921 using the recurrence
1922 \begin{equation}
1923 \label{eq:Bernoulli}
1924 \sum_{j=0}^m{m+1\choose{j}}B_j = 0
1925 \qquad B_0 = 1
1927 \end{equation}
1928 Note that \eqref{eq:summation} is also valid if $m = 0$,
1929 i.e., $S_n(0) = 0$, a fact
1930 that can be easily shown using Newton series~\shortcite{VanEngelen2004}.
1932 \newcounter{saveenumi}
1934 Since we can only directly apply the summation formula when
1935 the lower bound is zero (or one), we need to consider several
1936 cases.
1937 \begin{enumerate}
1938 \item $l(\vec {\hat x}) \ge 1$
1940 \begin{align*}
1941 \sum_{x_1 = l(\vec {\hat x})}^{u(\vec{\hat x})} \alpha_n(\vec{\hat x}) \, x_1^n
1943 \alpha_n(\vec{\hat x})
1944 \left(
1945 \sum_{x_1 = 1}^{u(\vec{\hat x})} x_1^n
1947 \sum_{x_1 = 1}^{l(\vec {\hat x})-1} x_1^n
1948 \right)
1951 \alpha_n(\vec{\hat x})
1952 \left( S_n(u(\vec{\hat x})+1) - S_n(l(\vec {\hat x})) \right)
1953 \end{align*}
1955 \item $u(\vec{\hat x}) \le -1$
1957 \begin{align*}
1958 \sum_{x_1 = l(\vec {\hat x})}^{u(\vec{\hat x})} \alpha_n(\vec{\hat x}) \, x_1^n
1960 \alpha_n(\vec{\hat x}) (-1)^n
1961 \sum_{x_1 = -u(\vec {\hat x})}^{-l(\vec{\hat x})} \alpha_n(\vec{\hat x}) \, x_1^n
1964 \alpha_n(\vec{\hat x}) (-1)^n
1965 \left( S_n(-l(\vec{\hat x})+1) - S_n(-u(\vec {\hat x})) \right)
1966 \end{align*}
1968 \item $l(\vec {\hat x}) \le 0$ and $u(\vec{\hat x}) \ge 0$
1970 \begin{align*}
1971 \sum_{x_1 = l(\vec {\hat x})}^{u(\vec{\hat x})} \alpha_n(\vec{\hat x}) \, x_1^n
1973 \alpha_n(\vec{\hat x})
1974 \left(
1975 \sum_{x_1 = 0}^{u(\vec{\hat x})} x_1^n
1977 (-1)^n
1978 \sum_{x_1 = 1}^{-l(\vec {\hat x})} x_1^n
1979 \right)
1982 \alpha_n(\vec{\hat x})
1983 \left(
1984 S_n(u(\vec{\hat x})+1)
1986 (-1)^n
1987 S_n(-l(\vec{\hat x})+1)
1988 \right)
1989 \end{align*}
1991 \setcounter{saveenumi}{\value{enumi}}
1992 \end{enumerate}
1994 If the coefficients in the lower and upper bound are all
1995 integer, then the above 3 cases partition (the integer points in)
1996 the projection of $P$ onto the remaining variables.
1997 However, if some of the coefficients are rational, then the lower
1998 and upper bound can lie in the open interval $(0,1)$ for some
1999 values of $\vec{\hat x}$. We therefore also need to consider
2000 the following two cases.
2001 Note that the results will not be correct in these cases, but
2002 not taking them into account would lead to a greater loss in accuracy.
2004 \begin{enumerate}
2005 \setcounter{enumi}{\value{saveenumi}}
2006 \item $0 < l(\vec {\hat x}) < 1$
2009 \sum_{x_1 = l(\vec {\hat x})}^{u(\vec{\hat x})} \alpha_n(\vec{\hat x}) \, x_1^n
2011 \alpha_n(\vec{\hat x})
2012 S_n(u(\vec{\hat x})+1)
2015 \item $0 < -u(\vec {\hat x}) < 1$ and $l(\vec {\hat x}) \le 0$
2018 \sum_{x_1 = l(\vec {\hat x})}^{u(\vec{\hat x})} \alpha_n(\vec{\hat x}) \, x_1^n
2020 \alpha_n(\vec{\hat x})
2021 (-1)^n
2022 S_n(-l(\vec{\hat x})+1)
2025 \end{enumerate}
2027 \subsection{Summation using local Euler-Maclaurin formula}
2028 \label{s:euler}
2030 \sindex{local}{Euler-Maclaurin formula}
2031 In this section we provide some implementation details
2032 on using \ai{local Euler-Maclaurin formula} to compute
2033 the sum of a piecewise polynomial evaluated in all integer
2034 points of a two-dimensional parametric polytope.
2035 For the theory behind these formula and a discussion
2036 of the original implementation (for non-parametric simplices),
2037 we refer to \shortciteN{Berline2006local}.
2039 In particular, consider a parametric piecewise polynomial
2040 in $n$ parameters and $m$ variables
2041 $c : \ZZ^n \to \ZZ^m \to \QQ : \vec p \mapsto c(\vec p)$,
2042 with $c(\vec p) : \ZZ^m \to \QQ : \vec x \mapsto c(\vec p)(\vec x)$
2045 c_{\vec p}(\vec x) =
2046 \begin{cases}
2047 c_1(\vec p)(\vec x) & \text{if $\vec x \in D_1(\vec p)$}
2049 \vdots
2051 c_r(\vec p)(\vec x) & \text{if $\vec x \in D_r(\vec p)$}
2053 \end{cases}
2055 with the $c_i$ polynomials, $c_i \in (\QQ[\vec p])[\vec x]$, and
2056 the $D_i$ disjoint linearly parametric polytopes.
2057 We want to compute
2059 g(\vec p) = \sum_{\vec x \in \ZZ^m} c(\vec p)(\vec x)
2063 \subsubsection{Reduction to the summation of a parametric polynomial
2064 over a parametric polytope with a fixed combinatorial structure}
2066 Since the $D_i$ are disjoint, we can consider each
2067 $(c_i, D_i)$-pair individually and compute
2069 g(\vec p) = \sum_{i=1}^r g_i(\vec p) =
2070 \sum_{i=1}^r \sum_{\vec x \in D_r(\vec p) \cap \ZZ^m} c_r(\vec p)(\vec x)
2073 The second step is to compute the \ai{chamber decomposition}
2074 ~\shortcite[Section 4.2.3]{Verdoolaege2005PhD} of each parametric
2075 polytope $D_i$.
2076 The result is a subdivision of the parameter space into chambers
2077 $C_{ij}$ such that $D_i$ has a fixed combinatorial structure,
2078 in particular a fixed set of parametric vertices,
2079 on (the interior of) each $C_{ij}$. Applying \autoref{p:inclusion-exclusion},
2080 this subdivision can be transformed into a partition
2081 $\{\, \tilde C_{ij} \,\}$ by
2082 making some of the facets of the chambers open%
2083 ~\shortcite[Section~3.2]{Koeppe2007parametric}.
2084 Since we are only interested in integer parameter values,
2085 any of the resulting open facets $\sp a p + c > 0$,
2086 with $\vec a \in \ZZ^n$ and $c \in \ZZ$,
2087 can then be replaced by $\sp a p + c-1 \ge 0$.
2088 Again, we have
2090 g_i(\vec p) = \sum_j g_{ij}(\vec p) =
2091 \sum_j \sum_{\vec x \in C_{ij}(\vec p) \cap \ZZ^m} c_r(\vec p)(\vec x)
2095 After this reduction, the technique of
2096 \shortciteN{Berline2006local} can be applied practically verbatim
2097 to the parametric polytope with a fixed combinatorial structure.
2098 In principle, we could also handle piecewise quasi-polynomials
2099 using the technique of \shortciteN[Section~4.5.4]{Verdoolaege2005PhD},
2100 except that we only need to create an extra variable for each
2101 distinct floor expression in a monomial, rather than for each
2102 occurrence of a floor expression in a monomial.
2103 However, since we currently only support two-dimensional polytopes,
2104 this reduction has not been implemented yet.
2106 \subsubsection{Summation over a one-dimensional parametric polytope}
2108 The basis for the summation technique is the local
2109 Euler-Maclaurin formula~\cite[Theorem~26]{Berline2006local}
2110 \begin{equation}
2111 \label{eq:EML}
2112 \sum_{\vec x \in P(\vec p) \cap \Lambda} h(\vec p)(\vec x)
2113 = \sum_{F(\vec p) \in {\mathcal F}(P(\vec p))}
2114 \int_{F(\vec p)} D_{P(\vec p),F(\vec p)} \cdot h(\vec p)
2116 \end{equation}
2117 where $P(\vec p)$ is a parametric polytope,
2118 $\Lambda$ is a lattice, ${\mathcal F}(P(\vec p))$
2119 are the faces of $P(\vec p)$, $D_{P(\vec p),F(\vec p)}$ is a
2120 specific differential operator associated to the face of a polytope.
2121 The \ai{Lebesgue measure} used in the integral is such that the
2122 integral of the indicator function of a lattice element of
2123 the lattice $\Lambda \cap (\affhull(F(\vec p)) - F(\vec p))$ is 1,
2124 i.e., the intersection of $\Lambda$ with the linear subspace
2125 parallel to the affine hull of the face $F(\vec p)$.
2126 Note that the original theorem is formulated for a non-parametric
2127 polytope and a non-parametric polynomial. However, as we will see,
2128 in each of the steps in the computation, the parameters can be
2129 treated as symbolic constants without affecting the validity of the formula,
2130 see also~\shortciteN[Section 6]{Berline2006local}.
2132 The differential operator $D_{P(\vec p),F(\vec p)}$ is obtained
2133 by plugging in the vector $\vec D=(D_1,\ldots,D_m)$ of first
2134 order differential operators, i.e., $D_k$ is the first order
2135 differential operator in the $k$th variable,
2136 in the function $\mu_{P(\vec p),F(\vec p)}$.
2137 This function is determined by the \defindex{transverse cone}
2138 of the polyhedron $P(\vec p)$ along its face $F(\vec p)$,
2139 which is the \ai{supporting cone} of $P(\vec p)$ along $F(\vec p)$
2140 projected into the linear subspace orthogonal to $F(\vec p)$.
2141 The lattice associated to this space is the projection of
2142 $\Lambda$ into this space.
2144 In particular, for a zero-dimensional affine cone in the zero-dimensional
2145 space, we have $\mu = 1$~\cite[Proposition 12]{Berline2006local},
2146 while for a one-dimensional affine
2147 cone $K = (-t + \RR_+) r$ in the one-dimensional space, where
2148 $r$ is a primitive integer vector and $t \in [0,1)$,
2149 we have~\cite[(13)]{Berline2006local}
2150 \begin{equation}
2151 \label{eq:mu:1}
2152 \mu(K)(\xi) = \frac{e^{t y}}{1-e^y} + \frac 1{y}
2153 = -\sum_{n=0}^\infty \frac{b(n+1, t)}{(n+1)!} y^n
2155 \end{equation}
2156 with $y = \sps \xi r$ and $b(n,t)$ the \ai{Bernoulli polynomial}s
2157 defined by the generating series
2159 \frac{e^{ty} y}{e^y - 1} = \sum_{n=0}^\infty \frac{b(n,t)}{n!} y^n
2162 The constant terms of these Bernoulli polynomials
2163 are the \ai{Bernoulli number}s.
2165 Applying \eqref{eq:EML} to a one-dimensional parametric polytope
2166 $P(\vec p) = [v_1(\vec p), v_2(\vec p)]$, we find
2168 \begin{aligned}
2169 \sum_{x \in P(\vec p) \cap \ZZ} h(\vec p)(x)
2170 = & \int_{P(\vec p)} D_{P(\vec p), P(\vec p)} \cdot h(\vec p)
2172 & + \int_{v_1(\vec p)} D_{P(\vec p), v_1(\vec p)} \cdot h(\vec p)
2174 & + \int_{v_2(\vec p)} D_{P(\vec p), v_2(\vec p)} \cdot h(\vec p)
2176 \end{aligned}
2178 The transverse cone of a polytope along the whole polytope is
2179 a zero-dimensional cone in a zero-dimensional space and so
2180 $D_{P(\vec p), P(\vec p)} = \mu_{P(\vec p), P(\vec p)}(D) = 1$.
2181 The transverse cone along $v_1(\vec p)$ is $v_1(\vec p) + \RR_+$
2182 and so $D_{P(\vec p), v_1(\vec p)} = \mu(v_1(\vec p) + \RR_+)(D)$
2183 as in \eqref{eq:mu:1}, with $y = \sps D 1 = D$ and
2184 $t = \ceil{v_1(\vec p)} - v_1(\vec p) =
2185 \fractional{-v_1(\vec p)}$.
2186 Similarly we find
2187 $D_{P(\vec p), v_2(\vec p)} = \mu(v_2(\vec p) - \RR_+)(D)$
2188 as in \eqref{eq:mu:1}, with $y = \sps D {-1} = -D$ and
2189 $t = v_2(\vec p) - \floor{v_2(\vec p)} =
2190 \fractional{v_2(\vec p)}$.
2191 Summarizing, we find
2193 \begin{aligned}
2194 \sum_{x \in P(\vec p) \cap \ZZ} h(\vec p)(x)
2195 = & \int_{v_1(\vec p)}^{v_2(\vec p)} h(\vec p)(t) \, dt
2197 & -\sum_{n=0}^\infty \frac{b(n+1, \fractional{-v_1(\vec p)})}{(n+1)!}
2198 (D^n h(\vec p))(v_1(\vec p))
2200 & -\sum_{n=0}^\infty (-1)^n \frac{b(n+1, \fractional{v_2(\vec p)})}{(n+1)!}
2201 (D^n h(\vec p))(v_2(\vec p))
2203 \end{aligned}
2206 Note that in order to apply this formula, we need to verify
2207 first that $v_1(\vec p)$ is indeed smaller than (or equal to)
2208 $v_2(\vec p)$. Since the combinatorial structure of $P(\vec p)$
2209 does not change throughout the interior of the chamber, we only
2210 need to check the order of the two vertices for one value
2211 of the parameters from the interior of the chamber, a point
2212 which we may compute as in \autoref{s:interior}.
2214 \subsubsection{Summation over a two-dimensional parametric polytope}
2216 For two-dimensional polytope, formula~\eqref{eq:EML} has three kinds
2217 of contributions: the integral of the polynomial over the polytope,
2218 contributions along edges and contributions along vertices.
2219 As suggested by~\citeN{Berline2007personal}, the integral can be computed
2220 by applying the Green-Stokes theorem:
2222 \iint_{P(\vec p)}
2223 \left(\frac{\partial M}{\partial x} - \frac{\partial L}{\partial y}\right) =
2224 \int_{\partial P(\vec p)} (L\, dx + M\, dy)
2227 In particular, if $M(\vec p)(x,y)$ is such that
2228 $\frac{\partial M}{\partial x}(\vec p)(x,y) = h(\vec p)(x,y)$
2229 then
2231 \iint_{P(\vec p)} h(\vec p)(x,y) =
2232 \int_{\partial P(\vec p)} M(\vec p)(x,y) \, dy
2235 Care must be taken to integrate over the boundary in the positive
2236 direction. Assuming the vertices of the polygon are not given
2237 in a predetermined order, we can check the correct orientation
2238 of the vertices of each edge individually. Let $\vec n = (n_1, n_2)$
2239 be the inner normal of a facet and let $\vec v_1(\vec p)$
2240 and $\vec v_2(\vec p)$ be the two vertices of the facet, then
2241 the vertices are in the correct order if
2243 \begin{vmatrix}
2244 v_{2,1}(\vec p)-v_{1,1}(\vec p) & n_1
2246 v_{2,2}(\vec p)-v_{1,2}(\vec p) & n_2
2247 \end{vmatrix}
2248 \ge 0
2251 Since these two vertices belong to the same edge, their order
2252 will not change within a chamber and so we can again perform
2253 this check for a single value of the parameters.
2254 To integrate $M$ over an edge $F$, let $\vec f$ be a primitive
2255 integer vector in the direction of the edge.
2256 Then $\vec v_2(\vec p) = \vec v_1(\vec p) + k(\vec p) \, \vec f$
2257 and any point on the edge can be written as
2258 $\vec v_1(\vec p) + \lambda \vec f$ with
2259 $0 \le \lambda \le k(\vec p)$.
2260 That is,
2261 \begin{equation}
2262 \label{eq:EML:int}
2263 \int_F M(\vec p)(x,y) \, dy
2265 \int_0^{k(\vec p)}
2266 M(\vec p)(v_{1,1}(\vec p) + \lambda f_1,
2267 v_{1,2}(\vec p) + \lambda f_2)
2268 f_2 \, d\lambda
2270 \end{equation}
2272 For the edges, we can again apply \eqref{eq:mu:1}, but we
2273 must first project the supporting cone at the edge into
2274 the linear subspace orthogonal to the edge.
2275 Let $\vec n = (n_1, n_2)$ be the (primitive integer) inner normal
2276 of this facet $F(\vec p)$, then $\vec f = (-n_2, n_1)$ is parallel
2277 to the facet and we can write one of the vertices $\vec v(\vec p)$
2278 as a linear combination of these two vectors:
2279 \begin{equation}
2280 \label{eq:EML:facet:coordinates}
2281 \vec v(\vec p)
2283 \begin{bmatrix}
2284 \vec f & \vec n
2285 \end{bmatrix}
2286 \vec a(\vec p)
2288 \begin{bmatrix}
2289 -n_2 & n_1 \\
2290 n_1 & n_2
2291 \end{bmatrix}
2292 \vec a(\vec p)
2293 \end{equation}
2295 \begin{equation}
2296 \label{eq:EML:facet:coordinates:2}
2297 \vec a(\vec p)
2299 \begin{bmatrix}
2300 -n_2 & n_1 \\
2301 n_1 & n_2
2302 \end{bmatrix}^{-1}
2303 \vec v(\vec p)
2305 \begin{bmatrix}
2306 -n_2/d & n_1/d \\
2307 n_1/d & n_2/d
2308 \end{bmatrix}
2309 \vec v(\vec p),
2310 \end{equation}
2311 with $d = n_1^2+n_2^2$.
2312 The lattice associated to the linear subspace orthogonal
2313 to the facet is the projection of $\Lambda$ into this space.
2314 Since $\vec n$ is primitive, a basis for this lattice can be
2315 identified with $\vec n/d$.
2316 The coordinate of the whole facet in this space is therefore
2318 d a_2(\vec p) =
2319 \begin{bmatrix}
2320 n_1 & n_2
2321 \end{bmatrix}
2322 \vec v(\vec p)
2323 $, while the transverse cone is $d a_2(\vec p) + \RR_+$.
2324 Similarly, a linear functional $\vec \xi'$ projects onto
2325 a linear functional $\xi = \sp {\xi'} n/d$ in the linear subspace.
2326 Applying \eqref{eq:mu:1}, with $y = \frac{n_1}d D_1 + \frac{n_2}d D_2$
2327 and $t = \fractional{- n_1 v_1(\vec p) - n_2 v_2(\vec p)}$, we therefore
2328 find
2329 \begin{align*}
2330 D_{P(\vec p), F(\vec p)}
2332 -\sum_{n=0}^\infty
2333 \frac{b(n+1, \fractional{-n_1 v_1(\vec p) - n_2 v_2(\vec p)})}{(n+1)!}
2334 \left(\frac{n_1}d D_1 + \frac{n_2}d D_2\right)^n
2337 - \sum_{i=0}^\infty \sum_{j=0}^\infty
2338 \frac{b(i+j+1, \fractional{-n_1 v_1(\vec p) - n_2 v_2(\vec p)})}{(i+j+1)!}
2339 \frac{n_1^i n_2^j}{d^{i+j}} D_1^i D_2^j
2341 \end{align*}
2342 After applying this differential operator to the polynomial
2343 $h(\vec p)(\vec x)$, the resulting polynomial
2345 h'(\vec p)(\vec x) = D_{P(\vec p), F(\vec p)} \cdot h(\vec p)(\vec x)
2347 needs to be integrated over the facet.
2348 The measure to be used is such that the integral of a lattice tile
2349 in the linear space parallel to the facet is 1, i.e.,
2351 \int_{\vec 0}^{\vec f} 1 = \int_0^1 1 dz = 1,
2353 with $z$ the coordinate along $\vec f$.
2354 Referring to \eqref{eq:EML:facet:coordinates} and
2355 \eqref{eq:EML:facet:coordinates:2}, all points of the facet
2356 have the form $\vec x(\vec p) = z \, \vec f + a_2(\vec p) \, \vec n$,
2357 while the $z$-coordinate of the vertices $\vec v_1(\vec p)$
2358 and $\vec v_2(\vec p)$ are
2359 $(-n_2 v_{1,1} + n_1 v_{1,2})/d$
2361 $(-n_2 v_{2,1} + n_1 v_{2,2})/d$, respectively.
2362 That is, the contribution of the facet is equal to
2364 \int_{(-n_2 v_{1,1} + n_1 v_{1,2})/d}^{(-n_2 v_{2,1} + n_1 v_{2,2})/d}
2365 h'(\vec p)\left(z \, \vec f + a_2(\vec p) \, \vec n\right) \, dz
2368 where, again, we need to ensure that the lower limit is smaller
2369 than the upper limit using the usual method of plugging in a
2370 particular value of the parameters.
2372 Finally, we consider the contributions of the vertices.
2373 The \ai{transverse cone}s are in this case simply the supporting cones.
2374 Since $\mu$ is a valuation, we may apply \ai{Barvinok's decomposition}
2375 and assume that the cone is unimodular.
2376 For an affine cone
2377 \begin{align*}
2378 K &= \vec v(\vec p) + \RR_+ \vec r_1 + \RR_+ \vec r_2
2380 &= (a_1(\vec p) + \RR_+) \vec r_1 + (a_2(\vec p) + \RR_+) \vec r_2,
2381 \end{align*}
2382 with
2384 \vec a(\vec p) =
2385 \begin{bmatrix}
2386 \vec r_1 & \vec r_2
2387 \end{bmatrix}^{-1}
2388 \vec v(\vec p)
2391 we have~\cite[Proposition~31]{Berline2006local},
2392 \begin{equation}
2393 \label{eq:mu:2}
2394 \mu(K)(\vec\xi)
2396 \frac{e^{t_1 y_1 + t_2 y_2}}{(1-e^{y_1})(1-e^{y_2})}
2397 + \frac 1{y_1}B(y_2 - C_1 y_1, t_2)
2398 + \frac 1{y_2}B(y_1 - C_2 y_2, t_1)
2399 - \frac 1{y_1 y_2},
2400 \end{equation}
2401 with
2403 B(y,t) =
2404 \frac{e^{t y}}{1-e^y} + \frac 1{y}
2405 = -\sum_{n=0}^\infty \frac{b(n+1, t)}{(n+1)!} y^n
2408 $y_i = \sps{\vec\xi}{\vec r_i}$,
2409 $C_i = \sps{\vec v_1}{\vec v_2}/\sps{\vec v_i}{\vec v_i}$
2411 $t_i = \fractional{-a_i(\vec p)}$.
2412 Expanding \eqref{eq:mu:2}, we find
2413 \begin{align*}
2414 \mu(K)(\vec\xi)
2416 \left(
2417 -\frac{b(0,t1)}{y_1} - \sum_{n=0}^\infty \frac{b(n+1,t_1)}{(n+1)!} y_1^n
2418 \right)
2419 \left(
2420 -\frac{b(0,t2)}{y_2} - \sum_{n=0}^\infty \frac{b(n+1,t_2)}{(n+1)!} y_2^n
2421 \right)
2423 & \phantom{=}
2425 \left(
2426 \sum_{n=0}^\infty \frac{b(n+1,t_2)}{(n+1)!} \frac{y_2^n}{y_1}
2428 \sum_{n=0}^\infty \frac{b(n+1,t_2)}{(n+1)!} \frac{(y_2-C_1 y_1)^n-y_2^n}{y_1}
2429 \right)
2431 & \phantom{=}
2433 \left(
2434 \sum_{n=0}^\infty \frac{b(n+1,t_1)}{(n+1)!} \frac{y_1^n}{y_2}
2436 \sum_{n=0}^\infty \frac{b(n+1,t_1)}{(n+1)!} \frac{(y_1-C_2 y_2)^n-y_1^n}{y_2}
2437 \right)
2439 & \phantom{=}
2440 - \frac 1{y_1 y_2}
2443 \sum_{n_1=0}^\infty
2444 \sum_{n_2=0}^\infty
2445 c(C_1, C_2, t_1, t_2; n_1, n_2) \, y_1^n y_2^n
2447 \end{align*}
2448 with
2449 \begin{align*}
2450 c(C_1, C_2, t_1, t_2; n_1, n_2)
2452 \frac{b(n_1+1,t_1)}{(n_1+1)!} \frac{b(n_2+1,t_2)}{(n_2+1)!}
2456 \frac{b(n_1+n_2+1,t_2)}{(n_1+n_2+1)!} {n_1+n_2+1 \choose n_1+1}
2457 \left(-C_1\right)^{n_1+1}
2461 \frac{b(n_1+n_2+1,t_1)}{(n_1+n_2+1)!} {n_1+n_2+1 \choose n_2+1}
2462 \left(-C_2\right)^{n_2+1}
2464 \end{align*}
2465 For $\vec \xi = \vec D$, we have
2466 \begin{align*}
2467 y_1^n y_2^n
2469 \left( r_{1,1} D_1 + r_{1,2} D_2 \right)^{n_1}
2470 \left( r_{2,1} D_1 + r_{2,2} D_2 \right)^{n_2}
2473 \left(
2474 \sum_{k=0}^{n_1} r_{1,1}^k r_{1,2}^{n_1 - k} { n_1 \choose k} D_1^k D_2^{n_1-k}
2475 \right)
2476 \left(
2477 \sum_{l=0}^{n_2} r_{2,1}^l r_{2,2}^{n_2 - l} { n_2 \choose l} D_1^l D_2^{n_2-l}
2478 \right)
2479 \end{align*}
2480 and so
2482 D_{P(\vec p), \vec v(\vec p)} = \mu(K)(\vec D)
2486 \sum_{i=0}^\infty
2487 \sum_{j=0}^\infty
2488 \sum_{\shortstack{$\scriptstyle i+j = n_1+n_2$\\$\scriptstyle n_1 \ge 0$\\$\scriptstyle n_2 \ge 0$}}
2489 \sum_{\shortstack{$\scriptstyle k+l = i$\\$\scriptstyle 0 \le k \le n_1$\\$\scriptstyle 0 \le l \le n_2$}}
2490 c(C_1, C_2, t_1, t_2; n_1, n_2)
2491 r_{1,1}^k r_{1,2}^{n_1 - k}
2492 r_{2,1}^l r_{2,2}^{n_2 - l}
2493 { n_1 \choose k} { n_2 \choose l} D_1^i D_2^j
2496 The contribution of this vertex is then
2498 h'(\vec p)(\vec v(\vec p))
2501 with $
2502 h'(\vec p)(\vec x) = D_{P(\vec p), \vec v(\vec p)} \cdot h(\vec p)(\vec x)
2505 \begin{example}
2506 As a simple example, consider the (non-parametric) triangle
2507 in \autoref{f:EML:triangle} and assume we want to compute
2509 \sum_{\vec x \in T \cap \ZZ^2} x_1 x_2
2512 Since $T \cap \ZZ^2 = \{\, (2,4), (3,4), (2,5) \, \}$,
2513 the result should be
2515 2 \cdot 4 + 3 \cdot 4 + 2 \cdot 5 = 30
2519 \begin{figure}
2520 \intercol=1.2cm
2521 \begin{xy}
2522 <\intercol,0pt>:<0pt,\intercol>::
2523 \POS@i@={(2,4),(3,4),(2,5),(2,4)},{0*[|(2)]\xypolyline{}}
2524 \POS(2.35,4.25)*{x_1 x_2}
2525 \POS(2,4)*+!U{(2,4)}
2526 \POS(3,4)*+!U{(3,4)}
2527 \POS(2,5)*+!D{(2,5)}
2528 \POS(2,4)*{\cdot}
2529 \POS(3,4)*{\cdot}
2530 \POS(2,5)*{\cdot}
2531 \POS(-1,0)\ar(4,0)
2532 \POS(0,-1)\ar(0,5.5)
2533 \end{xy}
2534 \caption{Sum of polynomial $x_1 x_2$ over the integer points in a triangle $T$}
2535 \label{f:EML:triangle}
2536 \end{figure}
2538 Let us first consider the integral
2540 \iint_T x_1 x_2 = \int_{\partial T} \frac{x_1^2 x_2}2 \, d x_2
2543 Integration along each of the edges of the triangle yields
2544 the following.
2546 \marginpar{%
2547 \intercol=1cm
2548 \begin{xy}
2549 <\intercol,0pt>:<0pt,\intercol>::
2550 \POS(0,-1)*\xybox{
2551 \POS@i@={(0,0),(1,0),(0,1),(0,0)},{0*\xypolyline{--}}
2552 \POS(0,0)\ar@[|(2)](1,0)
2554 \end{xy}
2556 For the edge in the margin, we have $\vec f = (1,0)$, i.e., $f_2 = 0$.
2557 The contribution of this edge to the integral is therefore zero.
2559 \marginpar{%
2560 \intercol=1cm
2561 \begin{xy}
2562 <\intercol,0pt>:<0pt,\intercol>::
2563 \POS(0,-1)*\xybox{
2564 \POS@i@={(0,0),(1,0),(0,1),(0,0)},{0*\xypolyline{--}}
2565 \POS(1,0)\ar@[|(2)](0,1)
2567 \end{xy}
2569 For this edge, we have $\vec f = (-1,1)$.
2570 The contribution of this edge to the integral is therefore
2572 \int_0^1 \frac{(3-\lambda)^2(4+\lambda)}2 d\lambda
2573 = \frac{337}{24}
2577 \marginpar{%
2578 \intercol=1cm
2579 \begin{xy}
2580 <\intercol,0pt>:<0pt,\intercol>::
2581 \POS(0,-1)*\xybox{
2582 \POS@i@={(0,0),(1,0),(0,1),(0,0)},{0*\xypolyline{--}}
2583 \POS(0,1)\ar@[|(2)](0,0)
2585 \end{xy}
2587 For this edge, we have $\vec f = (0,-1)$.
2588 The contribution of this edge to the integral is therefore
2590 \int_0^1 \frac{2^2(5-\lambda)}2 (-1) d\lambda
2591 = -9
2595 The total integral is therefore
2597 \int_{\partial T} \frac{x_1^2 x_2}2 \, d x_2
2598 = 0 + \frac{337}{24} - 9 = \frac{121}{24}
2602 Now let us consider the contributions of the edges.
2603 We will need the following \ai{Bernoulli number}s in our
2604 computations.
2605 \begin{align*}
2606 b(1,0) & = - \frac 1 2
2608 b(2,0) & = \frac 1 6
2610 b(3,0) & = 0
2612 b(4,0) & = -\frac 1 {30}
2613 \end{align*}
2615 \marginpar{%
2616 \intercol=1cm
2617 \begin{xy}
2618 <\intercol,0pt>:<0pt,\intercol>::
2619 \POS(0,-1)*\xybox{
2620 \POS@i@={(0,0),(1,0),(0,1),(0,0)},{0*\xypolyline{--}}
2621 \POS(0,0)\ar@[|(2)]@{-}(1,0)
2622 \POS(0.5,0)\ar(0.5,1)
2624 \end{xy}
2626 The normal to the facet $F_1$ in the margin is $\vec n = (0,1)$.
2627 The vector $\vec f = (-1,0)$ is parallel to the facet.
2628 We have
2630 \begin{bmatrix}
2631 2 \\ 4
2632 \end{bmatrix}
2635 \begin{bmatrix}
2636 -1 \\ 0
2637 \end{bmatrix}
2639 \begin{bmatrix}
2640 0 \\ 1
2641 \end{bmatrix}
2642 \quad\text{and}\quad
2643 \begin{bmatrix}
2644 3 \\ 4
2645 \end{bmatrix}
2648 \begin{bmatrix}
2649 -1 \\ 0
2650 \end{bmatrix}
2652 \begin{bmatrix}
2653 0 \\ 1
2654 \end{bmatrix}
2657 Therefore $t = \fractional{-4} = 0$, $y = D_2$,
2658 \begin{align*}
2659 D_{T,F_1}
2660 & =
2661 - \sum_{j=0}^\infty \frac{b(j+1, 0)}{(j+1)!} D_2^j
2664 - \frac{b(1,0)}1 - \frac{b(2,0)}2 D_2 + \cdots
2665 \end{align*}
2668 h'(\vec x) =
2669 D_{T,F_1} \cdot x_1 x_2 =
2670 \left(\frac 1 2 - \frac 1{12} D_2\right) \cdot x_1 x_2
2672 \frac 1 2 x_1 x_2 - \frac 1{12} x_1
2675 With $x_1 = - z$ and $x_2 = 4$, the contribution of this facet
2678 \int_{-3}^{-2} - 2 z + \frac 1{12} z \, dz
2680 \frac{115}{24}
2684 \marginpar{%
2685 \intercol=1cm
2686 \begin{xy}
2687 <\intercol,0pt>:<0pt,\intercol>::
2688 \POS(0,-1)*\xybox{
2689 \POS@i@={(0,0),(1,0),(0,1),(0,0)},{0*\xypolyline{--}}
2690 \POS(0,0)\ar@[|(2)]@{-}(0,1)
2691 \POS(0,0.5)\ar(1,0.5)
2693 \end{xy}
2695 The normal to the facet $F_2$ in the margin is $\vec n = (1,0)$.
2696 The vector $\vec f = (0,1)$ is parallel to the facet.
2697 We have
2699 \begin{bmatrix}
2700 2 \\ 4
2701 \end{bmatrix}
2704 \begin{bmatrix}
2705 0 \\ 1
2706 \end{bmatrix}
2708 \begin{bmatrix}
2709 1 \\ 0
2710 \end{bmatrix}
2711 \quad\text{and}\quad
2712 \begin{bmatrix}
2713 2 \\ 5
2714 \end{bmatrix}
2717 \begin{bmatrix}
2718 0 \\ 1
2719 \end{bmatrix}
2721 \begin{bmatrix}
2722 1 \\ 0
2723 \end{bmatrix}
2726 Therefore $t = \fractional{-2} = 0$, $y = D_1$,
2727 \begin{align*}
2728 D_{T,F_2}
2729 & =
2730 - \sum_{i=0}^\infty \frac{b(i+1, 0)}{(i+1)!} D_1^i
2733 - \frac{b(1,0)}1 - \frac{b(2,0)}2 D_1 + \cdots
2734 \end{align*}
2737 h'(\vec x) =
2738 D_{T,F_2} \cdot x_1 x_2 =
2739 \left(\frac 1 2 - \frac 1{12} D_1\right) \cdot x_1 x_2
2741 \frac 1 2 x_1 x_2 - \frac 1{12} x_2
2744 With $x_1 = 2$ and $x_2 = z$, the contribution of this facet
2747 \int_{4}^{5} z - \frac 1{12} z \, dz
2749 \frac{33}{8}
2753 \marginpar{%
2754 \intercol=1cm
2755 \begin{xy}
2756 <\intercol,0pt>:<0pt,\intercol>::
2757 \POS(0,-1)*\xybox{
2758 \POS@i@={(0,0),(1,0),(0,1),(0,0)},{0*\xypolyline{--}}
2759 \POS(1,0)\ar@[|(2)]@{-}(0,1)
2760 \POS(0.5,0.5)\ar(-0.5,-0.5)
2762 \end{xy}
2764 The normal to the facet $F_3$ in the margin is $\vec n = (-1,-1)$.
2765 The vector $\vec f = (1,-1)$ is parallel to the facet.
2766 We have
2768 \begin{bmatrix}
2769 3 \\ 4
2770 \end{bmatrix}
2772 -\frac 1 2
2773 \begin{bmatrix}
2774 1 \\ -1
2775 \end{bmatrix}
2776 -\frac 7 2
2777 \begin{bmatrix}
2778 -1 \\ -1
2779 \end{bmatrix}
2780 \quad\text{and}\quad
2781 \begin{bmatrix}
2782 2 \\ 5
2783 \end{bmatrix}
2785 -\frac 3 2
2786 \begin{bmatrix}
2787 1 \\ -1
2788 \end{bmatrix}
2789 -\frac 7 2
2790 \begin{bmatrix}
2791 -1 \\ -1
2792 \end{bmatrix}
2795 Therefore $t = \fractional{7} = 0$, $y = -\frac 1 2 D_1 -\frac 1 2 D_2$,
2796 \begin{align*}
2797 D_{T,F_3}
2798 & =
2799 - \sum_{i=0}^\infty \sum_{j=0}^\infty
2800 \frac{b(i+j+1, 0)}{(i+j+1)!}
2801 \frac{(-1)^{i+j}}{2^{i+j}} D_1^i D_2^j
2804 - \frac{b(1,0)}1
2805 + \frac 1 2 \frac{b(2,0)}2 D_1
2806 + \frac 1 2 \frac{b(2,0)}2 D_2 + \cdots
2807 \end{align*}
2810 h'(\vec x) =
2811 D_{T,F_4} \cdot x_1 x_2 =
2812 \left(\frac 1 2 + \frac 1{24} D_1 + \frac 1{24} D_2\right) \cdot x_1 x_2
2814 \frac 1 2 x_1 x_2 + \frac 1{24} x_2 + \frac 1{24} x_1
2817 With $x_1 = z + \frac 7 2$ and $x_2 = -z + \frac 7 2$,
2818 the contribution of this facet
2821 \int_{-\frac 3 2}^{-\frac 1 2}
2822 \frac 1 2 (z + \frac 7 2)(-z + \frac 7 2)
2823 + \frac 1{24}(-z + \frac 7 2)
2824 + \frac 1{24}(z + \frac 7 2) \, dz
2826 \frac{47}{8}
2830 The total contribution of the edges is therefore
2832 \frac{115}{24}+\frac{33}8+
2833 \frac{47}{8} = \frac{355}{24}
2837 Finally, we consider the contributions of the vertices.
2839 \marginpar{%
2840 \intercol=1cm
2841 \begin{xy}
2842 <\intercol,0pt>:<0pt,\intercol>::
2843 \POS(0,-1)*\xybox{
2844 \POS@i@={(0,0),(1,0),(0,1),(0,0)},{0*\xypolyline{--}}
2845 \POS(1,0)\ar@[|(2)](0,1)
2846 \POS(1,0)\ar@[|(2)](0,0)
2848 \end{xy}
2850 For the vertex $\vec v = (3,4)$, we have
2851 $\vec r_1 = (-1,0)$ and $\vec r_2 = (-1,1)$.
2852 Since $\vec v$ is integer, we have $t_1 = t_2 = 0$.
2853 Also, $C_1 = 1$, $C_2 = 1/2$, $y_1 = -D_1$ and $y_2 = -D_1 + D_2$.
2854 Since the total degree of the polynomial $x_1 x_2$ is two,
2855 we only need the coefficients of $\mu(K)(\vec \xi)$ up to
2856 $n_1+n_2 = 2$.
2858 \noindent
2859 \begin{tabular}{c|c|c}
2860 $n_1$ & $n_2$
2862 \hline
2863 0 & 0 &
2865 \left(
2866 \frac{b(1,0)}{1!}
2867 \frac{b(1,0)}{1!}
2869 \frac{b(2,0)}{2!}
2870 {1 \choose 1}(-1)^1
2872 \frac{b(2,0)}{2!}
2873 {1 \choose 1}(-\frac 12)^1
2874 \right)
2877 1 & 0 &
2879 \left(
2880 \frac{b(2,0)}{2!}
2881 \frac{b(1,0)}{1!}
2883 \frac{b(3,0)}{3!}
2884 {2 \choose 2}(-1)^2
2886 \frac{b(3,0)}{3!}
2887 {2 \choose 1}(-\frac 12)^1
2888 \right)
2889 \left(
2890 -D_1
2891 \right)
2894 0 & 1 &
2896 \left(
2897 \frac{b(1,0)}{1!}
2898 \frac{b(2,0)}{2!}
2900 \frac{b(3,0)}{3!}
2901 {2 \choose 1}(-1)^1
2903 \frac{b(3,0)}{3!}
2904 {2 \choose 2}(-\frac 12)^2
2905 \right)
2906 \left(
2907 -D_1 + D_2
2908 \right)
2911 2 & 0 &
2913 \left(
2914 \frac{b(3,0)}{3!}
2915 \frac{b(1,0)}{1!}
2917 \frac{b(4,0)}{4!}
2918 {3 \choose 3}(-1)^3
2920 \frac{b(4,0)}{4!}
2921 {3 \choose 1}(-\frac 12)^1
2922 \right)
2923 \left(
2924 -D_1
2925 \right)^2
2928 1 & 1 &
2930 \left(
2931 \frac{b(2,0)}{2!}
2932 \frac{b(2,0)}{2!}
2934 \frac{b(4,0)}{4!}
2935 {3 \choose 2}(-1)^2
2937 \frac{b(4,0)}{4!}
2938 {3 \choose 2}(-\frac 12)^2
2939 \right)
2940 \left(
2941 -D_1
2942 \right)
2943 \left(
2944 -D_1 + D_2
2945 \right)
2948 0 & 2 &
2950 \left(
2951 \frac{b(1,0)}{1!}
2952 \frac{b(3,0)}{3!}
2954 \frac{b(4,0)}{4!}
2955 {3 \choose 1}(-1)^1
2957 \frac{b(4,0)}{4!}
2958 {3 \choose 3}(-\frac 12)^3
2959 \right)
2960 \left(
2961 -D_1 + D_2
2962 \right)^2
2964 \end{tabular}
2966 We find
2967 \begin{align*}
2968 h'(\vec x)
2970 \left(
2971 \frac 3 8 - \frac 1{24} (-D_1) - \frac 1{24} (-D_1 + D_2)
2972 + \frac 7{576} (-D_1 D_2)
2973 - \frac 5{1152} (-2 D_1 D2)
2974 \right) x_1 x_2
2977 \frac 3 8 x_1 x_2 + \frac 1{24} x_2 - \frac 1{24} (-x_2 + x_1)
2978 + \frac 7{576} (-1)
2979 - \frac 5{1152} (-2)
2981 \end{align*}
2982 The contribution of this vertex is therefore
2984 h'(3,4) = \frac {1355}{288}
2988 \marginpar{%
2989 \intercol=1cm
2990 \begin{xy}
2991 <\intercol,0pt>:<0pt,\intercol>::
2992 \POS(0,-1)*\xybox{
2993 \POS@i@={(0,0),(1,0),(0,1),(0,0)},{0*\xypolyline{--}}
2994 \POS(0,1)\ar@[|(2)](1,0)
2995 \POS(0,1)\ar@[|(2)](0,0)
2997 \end{xy}
2999 For the vertex $\vec v = (2,5)$, we have
3000 $\vec r_1 = (0,-1)$ and $\vec r_2 = (1,-1)$.
3001 Since $\vec v$ is integer, we have $t_1 = t_2 = 0$.
3002 Also, $C_1 = 1$, $C_2 = 1/2$, $y_1 = -D_2$ and $y_2 = D_1 - D_2$.
3003 We similarly find
3005 h'(\vec x)
3007 \frac 3 8 x_1 x_2 + \frac 1{24} x_1 - \frac 1{24} (x_2 - x_1)
3008 + \frac 7{576} (-1)
3009 - \frac 5{1152} (-2)
3012 The contribution of this vertex is therefore
3014 h'(2,5) = \frac {1067}{288}
3018 \marginpar{%
3019 \intercol=1cm
3020 \begin{xy}
3021 <\intercol,0pt>:<0pt,\intercol>::
3022 \POS(0,-1)*\xybox{
3023 \POS@i@={(0,0),(1,0),(0,1),(0,0)},{0*\xypolyline{--}}
3024 \POS(0,0)\ar@[|(2)](1,0)
3025 \POS(0,0)\ar@[|(2)](0,1)
3027 \end{xy}
3029 For the vertex $\vec v = (2,4)$, we have
3030 $\vec r_1 = (1,0)$ and $\vec r_2 = (0,1)$.
3031 Since $\vec v$ is integer, we have $t_1 = t_2 = 0$.
3032 The computations are easier in this case since
3033 $C_1 = C_2 = 0$, $y_1 = D_1$ and $y_2 = D_2$.
3034 We find
3036 h'(\vec x)
3038 \frac 1 4 x_1 x_2 - \frac 1{12} x_2 - \frac 1{12} x_1
3039 + \frac 1{144} (1)
3042 The contribution of this vertex is therefore
3044 h'(2,4) = \frac {253}{144}
3048 The total contribution of the vertices is then
3050 \frac {1355}{288} + \frac {1067}{288} + \frac {253}{144}
3051 = \frac {61}6
3053 and the total sum is
3055 \frac{121}{24}+\frac{355}{24}+\frac{61}6 = 30
3059 \end{example}
3061 \begin{example}
3062 Consider the parametric polytope
3064 P(n) = \{\, \vec x \mid x_1 \ge 2 \wedge 3 x_1 \le n + 9
3065 \wedge 4 \le x_2 \le 5 \,\}
3068 If $n \ge -3$, then the vertices of this polytope are
3069 $(2,4)$, $(2,5)$, $(3+n/3,4)$ and $(3+n/3,5)$.
3070 The contributions of the faces of $P(n)$ to
3072 \sum_{\vec x \in P(n) \cap \ZZ^2} x_1 x_2
3074 for the chamber $n \ge -3$ are shown in \autoref{t:sum:rectangle}.
3075 The final result is
3077 \begin{cases}
3078 \frac{ n^2}{2}
3079 - 3 n \fractional{\frac{ n}{3}}
3080 + \frac{21}{2} n
3081 + \frac{9}{2} \fractional{\frac{ n}{3}}^2
3082 - \frac{63}{2} \fractional{\frac{ n}{3}}
3083 + 45
3084 & \text{if $ n+3 \ge 0$}.
3085 \end{cases}
3088 \begin{table}
3089 \intercol=1cm
3090 \begin{tabular}{lc}
3091 \begin{xy}
3092 <\intercol,0pt>:<0pt,\intercol>::
3093 \POS(-1,-0.5)*\xybox{
3094 \POS@i@={(0,0),(1,0),(1,1),(0,1),(0,0)},{0*[|(2)]\xypolyline{}}
3095 \POS(0,1.1)*{}\POS(0,-0.1)*{}
3097 \end{xy}
3100 \displaystyle
3101 \frac{ n^2}{4}
3102 + \frac{9}{2} n
3103 + \frac{45}{4}
3106 \begin{xy}
3107 <\intercol,0pt>:<0pt,\intercol>::
3108 \POS(-1,-0.5)*\xybox{
3109 \POS@i@={(0,0),(1,0),(1,1),(0,1),(0,0)},{0*\xypolyline{--}}
3110 \POS(0,0)\ar@[|(2)]@{-}(0,1)
3111 \POS(0,0.5)*+!L{2}
3112 \POS(0,1.1)*{}\POS(0,-0.1)*{}
3114 \end{xy}
3117 \displaystyle
3118 \frac{33}{8}
3121 \begin{xy}
3122 <\intercol,0pt>:<0pt,\intercol>::
3123 \POS(-1,-0.5)*\xybox{
3124 \POS@i@={(0,0),(1,0),(1,1),(0,1),(0,0)},{0*\xypolyline{--}}
3125 \POS(1,0)\ar@[|(2)]@{-}(1,1)
3126 \POS(1,0.5)*+!L{3+n/3}
3127 \POS(0,1.1)*{}\POS(0,-0.1)*{}
3129 \end{xy}
3132 \displaystyle
3133 - \frac{3}{2} n \fractional{\frac{ n}{3}}
3134 + \frac{3}{4} n
3135 + \frac{9}{4} \fractional{\frac{ n}{3}}^2
3136 - \frac{63}{4} \fractional{\frac{ n}{3}}
3137 + \frac{57}{8}
3140 \begin{xy}
3141 <\intercol,0pt>:<0pt,\intercol>::
3142 \POS(-1,-0.5)*\xybox{
3143 \POS@i@={(0,0),(1,0),(1,1),(0,1),(0,0)},{0*\xypolyline{--}}
3144 \POS(0,0)\ar@[|(2)]@{-}(1,0)
3145 \POS(0.5,0)*+!D{4}
3146 \POS(0,1.1)*{}\POS(0,-0.1)*{}
3148 \end{xy}
3151 \displaystyle
3152 \frac{23}{216} n^2
3153 + \frac{23}{12} n
3154 + \frac{115}{24}
3157 \begin{xy}
3158 <\intercol,0pt>:<0pt,\intercol>::
3159 \POS(-1,-0.5)*\xybox{
3160 \POS@i@={(0,0),(1,0),(1,1),(0,1),(0,0)},{0*\xypolyline{--}}
3161 \POS(0,1)\ar@[|(2)]@{-}(1,1)
3162 \POS(0.5,1)*+!U{5}
3163 \POS(0,1.1)*{}\POS(0,-0.1)*{}
3165 \end{xy}
3168 \displaystyle
3169 \frac{31}{216} n^2
3170 + \frac{31}{12} n
3171 + \frac{155}{24}
3174 \begin{xy}
3175 <\intercol,0pt>:<0pt,\intercol>::
3176 \POS(-1,-0.5)*\xybox{
3177 \POS@i@={(0,0),(1,0),(1,1),(0,1),(0,0)},{0*\xypolyline{--}}
3178 \POS(1,1)\ar@[|(2)](1,0)
3179 \POS(1,1)\ar@[|(2)](0,1)
3180 \POS(1,1)*+!LU{(3+n/3,5)}
3181 \POS(0,1.1)*{}\POS(0,-0.1)*{}
3183 \end{xy}
3186 \displaystyle
3187 - \frac{31}{36} n \fractional{\frac{ n}{3}}
3188 + \frac{31}{72} n
3189 + \frac{31}{24} \fractional{\frac{ n}{3}}^2
3190 - \frac{217}{24} \fractional{\frac{ n}{3}}
3191 + \frac{589}{144}
3194 \begin{xy}
3195 <\intercol,0pt>:<0pt,\intercol>::
3196 \POS(-1,-0.5)*\xybox{
3197 \POS@i@={(0,0),(1,0),(1,1),(0,1),(0,0)},{0*\xypolyline{--}}
3198 \POS(0,1)\ar@[|(2)](1,1)
3199 \POS(0,1)\ar@[|(2)](0,0)
3200 \POS(0,1)*+!LU{(2,5)}
3201 \POS(0,1.1)*{}\POS(0,-0.1)*{}
3203 \end{xy}
3206 \displaystyle
3207 \frac{341}{144}
3210 \begin{xy}
3211 <\intercol,0pt>:<0pt,\intercol>::
3212 \POS(-1,-0.5)*\xybox{
3213 \POS@i@={(0,0),(1,0),(1,1),(0,1),(0,0)},{0*\xypolyline{--}}
3214 \POS(0,0)\ar@[|(2)](1,0)
3215 \POS(0,0)\ar@[|(2)](0,1)
3216 \POS(0,0)*+!LD{(2,4)}
3217 \POS(0,1.1)*{}\POS(0,-0.1)*{}
3219 \end{xy}
3222 \displaystyle
3223 \frac{253}{144}
3226 \begin{xy}
3227 <\intercol,0pt>:<0pt,\intercol>::
3228 \POS(-1,-0.5)*\xybox{
3229 \POS@i@={(0,0),(1,0),(1,1),(0,1),(0,0)},{0*\xypolyline{--}}
3230 \POS(1,0)\ar@[|(2)](1,1)
3231 \POS(1,0)\ar@[|(2)](0,0)
3232 \POS(1,0)*+!LD{(3+n/3,4)}
3233 \POS(0,1.1)*{}\POS(0,-0.1)*{}
3235 \end{xy}
3238 \displaystyle
3239 - \frac{23}{36} n \fractional{\frac{ n}{3}}
3240 + \frac{23}{72} n
3241 + \frac{23}{24} \fractional{\frac{ n}{3}}^2
3242 - \frac{161}{24} \fractional{\frac{ n}{3}}
3243 + \frac{437}{144}
3245 \end{tabular}
3246 \caption{Contributions of the faces of $P(n)$ to the sum of $x_1 x_2$ over
3247 the integer points of $P(n)$}
3248 \label{t:sum:rectangle}
3249 \end{table}
3251 \end{example}
3253 \subsection{Using TOPCOM to compute Chamber Decompositions}
3255 In this section, we describe how to use the correspondence
3256 between the \ai{regular triangulation}s of a point set
3257 and the chambers of the \ai{Gale transform}
3258 of the point set~\shortcite{Gelfand1994}
3259 to compute the chamber decomposition of a parametric polytope.
3260 This correspondence was also used by \shortciteN{Pfeifle2003}
3261 \shortciteN{Eisenschmidt2007integrally}.
3263 Let us first assume that the parametric polytope can be written as
3264 \begin{equation}
3265 \label{eq:TOPCOM:polytope}
3266 \begin{cases}
3267 \begin{aligned}
3268 \vec x &\ge 0
3270 A \, \vec x &\le \vec b(\vec p)
3272 \end{aligned}
3273 \end{cases}
3274 \end{equation}
3275 where the right hand side $\vec b(\vec p)$ is arbitrary and
3276 may depend on the parameters.
3277 The first step is to add slack variables $\vec s$ to obtain
3278 the \ai{vector partition} problem
3280 \begin{cases}
3281 \begin{aligned}
3282 A \, \vec x + I \, \vec s & = \vec b(\vec p)
3284 \vec x, \vec s &\ge 0
3286 \end{aligned}
3287 \end{cases}
3289 with $I$ the identity matrix.
3290 Then we compute the (right) kernel $K$ of the matrix
3291 $\begin{bmatrix}
3292 A & I
3293 \end{bmatrix}$, i.e.,
3295 \begin{bmatrix}
3296 A & I
3297 \end{bmatrix}
3302 and use \ai[\tt]{TOPCOM}'s \ai[\tt]{points2triangs} to
3303 compute the \ai{regular triangulation}s of the points specified
3304 by the rows of $K$.
3305 Each of the resulting triangulations corresponds to a chamber
3306 in the chamber complex of the above vector partition problem.
3307 Each simplex in a triangulation corresponds to a parametric
3308 vertex active on the corresponding chamber and
3309 each point in the simplex (i.e., a row of $K$) corresponds
3310 to a variable ($x_j$ or $s_j$) that is set to zero to obtain
3311 this parametric vertex.
3312 In the original formulation of the problem~\eqref{eq:TOPCOM:polytope}
3313 each such variable set to zero reflects the saturation of the
3314 corresponding constraint ($x_j = 0$ for $x_j = 0$ and
3315 $\sps {\vec a_j}{\vec x} = b_j(\vec p)$ for $s_j = 0$).
3316 A description of the chamber can then be obtained by plugging
3317 in the parametric vertices in the remaining constraints.
3319 \begin{example}
3320 Consider the parametric polytope
3322 P(p,q,r) = \{\,
3323 (i,j) \mid 0 \le i \le p \wedge
3324 0 \le j \le 2 i + q \wedge
3325 0 \le k \le i - p + r \wedge
3326 p \ge 0 \wedge
3327 q \ge 0 \wedge
3328 r \ge 0
3329 \,\}
3332 The constraints involving the variables are
3334 \begin{cases}
3335 \begin{aligned}
3336 \begin{bmatrix}
3341 & & 1
3342 \end{bmatrix}
3343 \begin{bmatrix}
3344 i \\ j \\ k
3345 \end{bmatrix}
3347 \begin{matrix}
3353 \end{matrix}
3354 \begin{array}{l}
3360 \end{array}
3362 \begin{bmatrix}
3363 1 & 0 & 0
3365 -1 & 0 & 1
3367 -2 & 1 & 0
3368 \end{bmatrix}
3369 \begin{bmatrix}
3370 i \\ j \\ k
3371 \end{bmatrix}
3373 \begin{matrix}
3379 \end{matrix}
3380 \begin{array}{l}
3385 -p + r
3386 \end{array}
3387 \end{aligned}
3388 \end{cases}
3390 We have
3392 \begin{bmatrix}
3393 1 & 0 & 0 & 1 & 0 & 0 \\
3394 -1 & 0 & 1 & 0 & 1 & 0 \\
3395 -2 & 1 & 0 & 0 & 0 & 1 \\
3396 \end{bmatrix}
3397 \begin{bmatrix}
3398 -1 & 0 & 0 \\
3399 -2 & 0 & -1 \\
3400 -1 & -1 & 0 \\
3401 1 & 0 & 0 \\
3402 0 & 1 & 0 \\
3403 0 & 0 & 1 \\
3404 \end{bmatrix}
3408 Computing the \ai{regular triangulation}s of the rows of $K$
3409 using \ai[\tt]{TOPCOM}, we obtain
3410 \begin{verbatim}
3411 > cat e2.topcom
3413 [ -1 0 0 ]
3414 [ -2 0 -1 ]
3415 [ -1 -1 0 ]
3416 [ 1 0 0 ]
3417 [ 0 1 0 ]
3418 [ 0 0 1 ]
3420 > points2triangs --regular < e2.topcom
3421 T[1]:={{0,1,2},{1,2,3},{0,1,4},{1,3,4},{0,2,5},{2,3,5},{0,4,5},{3,4,5}};
3422 T[2]:={{1,2,3},{1,3,4},{2,3,5},{3,4,5},{1,2,5},{1,4,5}};
3423 T[3]:={{1,2,3},{1,3,4},{2,3,5},{3,4,5},{1,2,4},{2,4,5}};
3424 \end{verbatim}
3426 We see that we have three chambers in the decomposition,
3427 one with 8 vertices and two with 6 vertices.
3428 Take the second vertex (``\verb+{1,2,3}+'') of the first chamber.
3429 This vertex corresponds
3430 to the saturation of the constraints $j \ge 0$, $k \ge 0$
3431 and $i \le p$, i.e., $(i,j,k) = (p,0,0)$. Plugging in this
3432 vertex in the remaining constraints, we see that it is only valid
3433 in case $p \ge 0$, $r \ge 0$ and $2p + q \ge 0$.
3434 For the remaining vertices of the first chamber, we similarly find
3436 \begin{tabular}{ccc}
3437 % e0
3438 \verb+{0,1,2}+ & $(0,0,0)$ & $p \ge 0$, $-q + r \ge 0$ and $q \ge 0$
3440 % 70
3441 \verb+{1,2,3}+ & $(p,0,0)$ & $p \ge 0$, $r \ge 0$ and $2p + q \ge 0$
3443 % c8
3444 \verb+{0,1,4}+ & $(0,0,-p+r)$ & $-q + r \ge 0$, $p \ge 0$ and $q \ge 0$
3446 % 58
3447 \verb+{1,3,4}+ & $(p,0,r)$ & $p \ge 0$, $r \ge 0$ and $2p + q \ge 0$
3449 % a4
3450 \verb+{0,2,5}+ & $(0,q,0)$ & $q \ge 0$, $p \ge 0$ and $-q + r \ge 0$
3452 % 34
3453 \verb+{2,3,5}+ & $(p, 2p+q, 0)$ & $p \ge 0$, $2p + q \ge 0$ and $r \ge 0$
3455 % 8c
3456 \verb+{0,4,5}+ & $(0, q, -p+r)$ & $q \ge 0$, $-q + r \ge 0$ and $p \ge 0$
3458 % 1c
3459 \verb+{3,4,5}+ & $(p, 2p+q, r)$ & $p \ge 0$, $2p + q \ge 0$ and $r \ge 0$
3460 \end{tabular}
3462 Combining these constraints with the initial constraints of the problem
3463 on the parameters
3464 $p \ge 0$, $q \ge 0$ and $r \ge 0$, we find the chamber
3466 \{\,
3467 (p,q,r) \mid p \ge 0 \wedge -p + r \ge 0 \wedge q \ge 0
3468 \,\}
3470 For the second chamber, we have
3472 \begin{tabular}{ccc}
3473 % 70
3474 \verb+{1,2,3}+ & $(p,0,0)$ & $p \ge 0$, $r \ge 0$ and $2p + q \ge 0$
3476 % 58
3477 \verb+{1,3,4}+ & $(p,0,r)$ & $p \ge 0$, $r \ge 0$ and $2p + q \ge 0$
3479 % 34
3480 \verb+{2,3,5}+ & $(p, 2p+q, 0)$ & $p \ge 0$, $2p + q \ge 0$ and $r \ge 0$
3482 % 1c
3483 \verb+{3,4,5}+ & $(p, 2p+q, r)$ & $p \ge 0$, $2p + q \ge 0$ and $r \ge 0$
3485 % 64
3486 \verb+{1,2,5}+ & $(-\frac q 2,0,0)$ &
3487 $-q \ge 0$, $2p + q \ge 0$ and $-2p -q+2r \ge 0$
3489 % 4c
3490 \verb+{1,4,5}+ & $(-\frac q 2,0,-p-\frac q 2+r)$ &
3491 $-q \ge 0$, $-2p -q+2r \ge 0$ and $2p + q \ge 0$
3492 \end{tabular}
3494 The chamber is therefore
3496 \{\,
3497 (p,q,r) \mid q = 0 \wedge p \ge 0 \wedge -p +r \ge 0
3498 \,\}
3500 Note that by intersecting with the initial constraints this chamber
3501 is no longer full-dimensional and can therefore be discarded.
3502 Finally, for the third chamber, we have
3504 \begin{tabular}{ccc}
3505 % 70
3506 \verb+{1,2,3}+ & $(p,0,0)$ & $p \ge 0$, $r \ge 0$ and $2p + q \ge 0$
3508 % 58
3509 \verb+{1,3,4}+ & $(p,0,r)$ & $p \ge 0$, $r \ge 0$ and $2p + q \ge 0$
3511 % 34
3512 \verb+{2,3,5}+ & $(p, 2p+q, 0)$ & $p \ge 0$, $2p + q \ge 0$ and $r \ge 0$
3514 % 1c
3515 \verb+{3,4,5}+ & $(p, 2p+q, r)$ & $p \ge 0$, $2p + q \ge 0$ and $r \ge 0$
3517 % 68
3518 \verb+{1,2,4}+ & $(p-r,0,0)$ &
3519 $p -r \ge 0$, $r \ge 0$ and $2p +q -2r \ge 0$
3521 % 2c
3522 \verb+{2,4,5}+ & $(p-r,2p+q-2r, 0)$ &
3523 $p -r \ge 0$, $2p +q -2r \ge 0$ and $r \ge 0$
3524 \end{tabular}
3526 The chamber is therefore
3528 \{\,
3529 (p,q,r) \mid p - r \ge 0 \wedge q \ge 0 \wedge r \ge 0
3530 \,\}
3532 \end{example}
3534 Now let us consider general parametric polytopes.
3535 First note that we can follow the same procedure as above
3536 if we replace $\vec x$ by $\vec x' - \vec c(\vec p)$
3537 in \eqref{eq:TOPCOM:polytope}, i.e.,
3538 if our problem has the form
3539 \begin{equation}
3540 \label{eq:TOPCOM:polytope:2}
3541 \begin{cases}
3542 \begin{aligned}
3543 \vec x' &\ge \vec c(\vec p)
3545 A \, \vec x' &\le \vec b(\vec p) + A \vec c(\vec p)
3547 \end{aligned}
3548 \end{cases}
3549 \end{equation}
3550 as saturating a constraint $x_i = 0$ is equivalent
3551 to saturating the constraint $x_i' = c_i(\vec p)$
3552 and, similarly, $\sps {\vec a_j}{\vec x} = b_j(\vec p)$
3553 is equivalent to
3554 $\sps {\vec a_j}{\vec x'} = b_j(\vec p) + \sps {\vec a_j}{\vec c(\vec p)}$.
3556 In the general case, the problem has the form
3558 A \vec x \ge \vec b(\vec p)
3561 Let $A'$ be a non-singular square submatrix of $A$ with the same number
3562 of columns and compute the (left) \indac{HNF} $H = A' U$ with $U$ unimodular
3563 and $H$ lower-triangular with non-positive elements below the diagonal.
3564 Replacing $\vec x$ by $U \vec x'$, we obtain
3566 \begin{cases}
3567 \begin{aligned}
3568 H \vec x' &\ge \vec b'(\vec p)
3570 -A''U \, \vec x' &\le -\vec b''(\vec p)
3572 \end{aligned}
3573 \end{cases}
3575 with $A''$ the remaining rows of $A$ and $\vec b(\vec p)$ split
3576 in the same way.
3577 If $H$ happens to be the identity matrix, then our problem is
3578 of the form \eqref{eq:TOPCOM:polytope:2} and we already know how
3579 to solve this problem.
3580 Note that, again, saturating any of the transformed constraints
3581 in $\vec x'$ is equivalent to saturating the corresponding constraint
3582 in $\vec x$. We therefore only need to compute $-A'' U$ for the
3583 computation of the kernel $K$. To construct the parametric vertices
3584 in the original coordinate system, we can simply use the original
3585 constraints.
3586 The same reasoning holds if $H$ is any diagonal matrix, since
3587 we can virtually replace $H \vec x$ by $\vec x'$ without affecting
3588 the non-negativity of the variables.
3590 If $H$ is not diagonal, then we can introduce new constraints
3591 $x'_j \ge d(\vec p)$, where $d(\vec p)$ is some symbolic constant.
3592 These constraints do not remove any solutions
3593 since each row in $H$ expresses that the corresponding variable is
3594 greater than or equal to a non-negative combination of the
3595 previous variables plus some constant.
3596 We can then proceed as before. However, to reduce unnecessary computations
3597 we may remove from $K$ the rows that correspond to these new rows.
3598 Any solution saturating the new constraint, would also saturate
3599 the corresponding constraint $\vec h_j^\T$ and all
3600 the constraints corresponding to the non-zero
3601 entries in $\vec h_j^\T$.
3602 If a chamber contains a vertex obtained by saturating such a new
3603 constraint, it would appear multiple times in the same chamber,
3604 each time combined with different constraints from the above set.
3605 Furthermore, there would also be another (as it turns out, identical)
3606 chamber where the vertex is only defined by the other constraints.
3608 \begin{example}
3609 Consider the parametric polytope
3611 P(n) = \{\,
3612 (i,j) \mid
3613 1 \le i \wedge 2 i \le 3 j \wedge j \le n
3614 \,\}
3617 The constraints are
3619 \begin{bmatrix}
3620 1 & 0 \\
3621 -2 & 3 \\
3622 0 & -1
3623 \end{bmatrix}
3624 \begin{bmatrix}
3625 i \\ j
3626 \end{bmatrix}
3628 \begin{bmatrix}
3629 1 \\
3630 0 \\
3632 \end{bmatrix}
3635 The top $2 \times 2$ submatrix is already in \indac{HNF}.
3636 We have $3 j \ge 2i \ge 2$, so we can add a constraint
3637 of the form $j \ge c(n)$ and obtain
3639 \begin{bmatrix}
3640 A & I
3641 \end{bmatrix}
3643 \begin{bmatrix}
3644 0 & 1 & 1 & 0
3646 2 & -3 & 0 & 1
3647 \end{bmatrix}
3650 while $K$ with $\begin{bmatrix}A & I\end{bmatrix} K = 0$ is given
3653 \begin{bmatrix}
3654 0 & 1 & 1 & 0
3656 2 & -3 & 0 & 1
3657 \end{bmatrix}
3658 \begin{bmatrix}
3659 1 & 0 \\
3660 0 & 1 \\
3661 0 & -1 \\
3662 -2 & 3
3663 \end{bmatrix}
3666 The second row of $K$ corresponds to the second variable,
3667 which in turn corresponds to the newly added constraint.
3668 Passing all rows of $K$ to \ai[\tt]{TOPCOM} we would get
3669 \begin{verbatim}
3670 > points2triangs --regular <<EOF
3671 > [[1 0],[0,1],[0,-1],[-2,3]]
3672 > EOF
3673 T[1]:={{0,1},{0,2},{1,3},{2,3}};
3674 T[2]:={{0,2},{2,3},{0,3}};
3675 T[3]:={};
3676 \end{verbatim}
3677 The first vertex in the first chamber saturates the second row
3678 (row 1) and therefore saturates both the first (0) and fourth (3)
3679 and it appears a second time as \verb+{1,3}+. Combining
3680 these ``two'' vertices into one as \verb+{0,3}+ results in the
3681 second (identical) chamber.
3682 Removing the row corresponding to the new constraint from $K$
3683 we remove the duplicates
3684 \begin{verbatim}
3685 > points2triangs --regular <<EOF
3686 > [[1 0],[0,-1],[-2,3]]
3687 > EOF
3688 T[1]:={{0,1},{1,2},{0,2}};
3689 T[2]:={};
3690 \end{verbatim}
3691 Note that in this example, we also could have interchanged
3692 the second and the third constraint and then have replaced $j$ by $-j'$.
3693 \end{example}
3695 In practice, this method of computing a \ai{chamber decomposition}
3696 does not seem to perform very well, mostly because
3697 \ai[\tt]{TOPCOM} can not exploit all available information
3698 about the parametric polytopes and will therefore compute
3699 many redundant triangulations/chambers.
3700 In particular, any chamber that does not intersect with
3701 the parameter domain of the parametric polytope, or only
3702 intersects in a face of this parameter domain, is completely redundant.
3703 Furthermore, if the parametric polytope is not simple, then many
3704 different combinations of the constraints will lead to the same parametric
3705 vertex. Many triangulations will therefore correspond to one and the
3706 same chamber in the chamber complex of the parametric polytope.
3707 For example, for a dilated octahedron, \ai[\tt]{TOPCOM} will
3708 compute 150 triangulations/chambers, 104 of which are empty,
3709 while the remaining 46 refer to the same single chamber.