isl_map_transitive_closure: coalesce after each step
[platform/upstream/isl.git] / doc / implementation.tex
1 \section{Sets and Relations}
2
3 \begin{definition}[Polyhedral Set]
4 A {\em polyhedral set}\index{polyhedral set} $S$ is a finite union of basic sets
5 $S = \bigcup_i S_i$, each of which can be represented using affine
6 constraints
7 $$
8 S_i : \Q^n \to 2^{\Q^d} : \vec s \mapsto
9 S_i(\vec s) =
10 \{\, \vec x \in \Z^d \mid \exists \vec z \in \Z^e :
11 A \vec x + B \vec s + D \vec z + \vec c \geq \vec 0 \,\}
12 ,
13 $$
14 with $A \in \Z^{m \times d}$,
15 $B \in \Z^{m \times n}$,
16 $D \in \Z^{m \times e}$
17 and $\vec c \in \Z^m$.
18 \end{definition}
19
20 \begin{definition}[Parameter Domain of a Set]
21 Let $S \in \Q^n \to 2^{\Q^d}$ be a set.
22 The {\em parameter domain} of $S$ is the set
23 $$\pdom S \coloneqq \{\, \vec s \in \Z^n \mid S(\vec s) \ne \emptyset \,\}.$$
24 \end{definition}
25
26 \begin{definition}[Polyhedral Relation]
27 A {\em polyhedral relation}\index{polyhedral relation}
28 $R$ is a finite union of basic relations
29 $R = \bigcup_i R_i$ of type
30 $\Q^n \to 2^{\Q^{d_1+d_2}}$,
31 each of which can be represented using affine
32 constraints
33 $$
34 R_i = \vec s \mapsto
35 R_i(\vec s) =
36 \{\, \vec x_1 \to \vec x_2 \in \Z^{d_1} \times \Z^{d_2}
37 \mid \exists \vec z \in \Z^e :
38 A_1 \vec x_1 + A_2 \vec x_2 + B \vec s + D \vec z + \vec c \geq \vec 0 \,\}
39 ,
40 $$
41 with $A_i \in \Z^{m \times d_i}$,
42 $B \in \Z^{m \times n}$,
43 $D \in \Z^{m \times e}$
44 and $\vec c \in \Z^m$.
45 \end{definition}
46
47 \begin{definition}[Parameter Domain of a Relation]
48 Let $R \in \Q^n \to 2^{\Q^{d+d}}$ be a relation.
49 The {\em parameter domain} of $R$ is the set
50 $$\pdom R \coloneqq \{\, \vec s \in \Z^n \mid R(\vec s) \ne \emptyset \,\}.$$
51 \end{definition}
52
53 \begin{definition}[Domain of a Relation]
54 Let $R \in \Q^n \to 2^{\Q^{d+d}}$ be a relation.
55 The {\em domain} of $R$ is the polyhedral set
56 $$\domain R \coloneqq \vec s \mapsto
57 \{\, \vec x_1 \in \Z^{d_1} \mid \exists \vec x_2 \in \Z^{d_2} :
58 (\vec x_1, \vec x_2) \in R(\vec s) \,\}
59 .
60 $$
61 \end{definition}
62
63 \begin{definition}[Range of a Relation]
64 Let $R \in \Q^n \to 2^{\Q^{d+d}}$ be a relation.
65 The {\em range} of $R$ is the polyhedral set
66 $$
67 \range R \coloneqq \vec s \mapsto
68 \{\, \vec x_2 \in \Z^{d_2} \mid \exists \vec x_1 \in \Z^{d_1} :
69 (\vec x_1, \vec x_2) \in R(\vec s) \,\}
70 .
71 $$
72 \end{definition}
73
74 \begin{definition}[Composition of Relations]
75 Let $R \in \Q^n \to 2^{\Q^{d_1+d_2}}$ and
76 $S \in \Q^n \to 2^{\Q^{d_2+d_3}}$ be two relations,
77 then the composition of
78 $R$ and $S$ is defined as
79 $$
80 S \circ R \coloneqq
81 \vec s \mapsto
82 \{\, \vec x_1 \to \vec x_3 \in \Z^{d_1} \times \Z^{d_3}
83 \mid \exists \vec x_2 \in \Z^{d_2} :
84 \vec x_1 \to \vec x_2 \in R(\vec s) \wedge
85 \vec x_2 \to \vec x_3 \in S(\vec s)
86 \,\}
87 .
88 $$
89 \end{definition}
90
91 \begin{definition}[Difference Set of a Relation]
92 Let $R \in \Q^n \to 2^{\Q^{d+d}}$ be a relation.
93 The difference set ($\Delta \, R$) of $R$ is the set
94 of differences between image elements and the corresponding
95 domain elements,
96 $$
97 \Delta \, R \coloneqq
98 \vec s \mapsto
99 \{\, \vec \delta \in \Z^{d} \mid \exists \vec x \to \vec y \in R :
100 \vec \delta = \vec y - \vec x
101 \,\}
102 $$
103 \end{definition}
104
105 \section{Coalescing}\label{s:coalescing}
106
107 See \shortciteN{Verdoolaege2009isl}, for now.
108 More details will be added later.
109
110 \section{Transitive Closure}
111
112 \subsection{Introduction}
113
114 \begin{definition}[Power of a Relation]
115 Let $R \in \Q^n \to 2^{\Q^{d+d}}$ be a relation and
116 $k \in \Z_{\ge 1}$
117 a positive number, then power $k$ of relation $R$ is defined as
118 \begin{equation}
119 \label{eq:transitive:power}
120 R^k \coloneqq
121 \begin{cases}
122 R & \text{if $k = 1$}
123 \\
124 R \circ R^{k-1} & \text{if $k \ge 2$}
125 .
126 \end{cases}
127 \end{equation}
128 \end{definition}
129
130 \begin{definition}[Transitive Closure of a Relation]
131 Let $R \in \Q^n \to 2^{\Q^{d+d}}$ be a relation,
132 then the transitive closure $R^+$ of $R$ is the union
133 of all positive powers of $R$,
134 $$
135 R^+ \coloneqq \bigcup_{k \ge 1} R^k
136 .
137 $$
138 \end{definition}
139 Alternatively, the transitive closure may be defined
140 inductively as
141 \begin{equation}
142 \label{eq:transitive:inductive}
143 R^+ \coloneqq R \cup \left(R \circ R^+\right)
144 .
145 \end{equation}
146
147 Since the transitive closure of a polyhedral relation
148 may no longer be a polyhedral relation \shortcite{Kelly1996closure},
149 we can, in the general case, only compute an approximation
150 of the transitive closure.
151 Whereas \shortciteN{Kelly1996closure} compute underapproximations,
152 we, like \shortciteN{Beletska2009}, compute overapproximations.
153 That is, given a relation $R$, we will compute a relation $T$
154 such that $R^+ \subseteq T$.  Of course, we want this approximation
155 to be as close as possible to the actual transitive closure
156 $R^+$ and we want to detect the cases where the approximation is
157 exact, i.e., where $T = R^+$.
158
159 For computing an approximation of the transitive closure of $R$,
160 we follow the same general strategy as \shortciteN{Beletska2009}
161 and first compute an approximation of $R^k$ for $k \ge 1$ and then project
162 out the parameter $k$ from the resulting relation.
163
164 \begin{example}
165 As a trivial example, consider the relation
166 $R = \{\, x \to x + 1 \,\}$.  The $k$th power of this map
167 for arbitrary $k$ is
168 $$
169 R^k = k \mapsto \{\, x \to x + k \mid k \ge 1 \,\}
170 .
171 $$
172 The transitive closure is then
173 $$
174 \begin{aligned}
175 R^+ & = \{\, x \to y \mid \exists k \in \Z_{\ge 1} : y = x + k \,\}
176 \\
177 & = \{\, x \to y \mid y \ge x + 1 \,\}
178 .
179 \end{aligned}
180 $$
181 \end{example}
182
183 \subsection{Computing an Approximation of $R^k$}
184
185 In general, it is impossible to construct a closed form
186 of $R^k$ as a polyhedral relation.
187 We will therefore need to make some approximations.
188 As a first approximations, we will consider each of the basic
189 relations in $R$ as simply adding one or more offsets to a domain element
190 to arrive at an image element and ignore the fact that some of these
191 offsets may only be applied to some of the domain elements.
192 That is, we will only consider the difference set $\Delta\,R$ of the relation.
193 In particular, we will first construct a collection $P$ of paths
194 that move through
195 a total of $k$ offsets and then intersect domain and range of this
196 collection with those of $R$.
197 That is, 
198 \begin{equation}
199 \label{eq:transitive:approx}
200 K = P \cap \left(\domain R \to \range R\right)
201 ,
202 \end{equation}
203 with
204 \begin{equation}
205 \label{eq:transitive:path}
206 P = \vec s \mapsto \{\, \vec x \to \vec y \mid
207 \exists k_i \in \Z_{\ge 0} :
208 \vec y = \vec x + \sum_i k_i \, \Delta_i(\vec s)
209 \wedge
210 \sum_i k_i = k > 0
211 \,\}
212 \end{equation}
213 and with $\Delta_i$ the basic sets that compose
214 the difference set $\Delta\,R$.
215 Note that the number of basic sets $\Delta_i$ need not be
216 the same as the number of basic relations in $R$.
217 Also note that since addition is commutative, it does not
218 matter in which order we add the offsets and so we are allowed
219 to group them as we did in \eqref{eq:transitive:path}.
220
221 If all the $\Delta_i$s are singleton sets
222 $\Delta_i = \{\, \vec \delta_i \,\}$ with $\vec \delta_i \in \Z^d$,
223 then \eqref{eq:transitive:path} simplifies to
224 \begin{equation}
225 \label{eq:transitive:singleton}
226 P = \{\, \vec x \to \vec y \mid
227 \exists k_i \in \Z_{\ge 0} :
228 \vec y = \vec x + \sum_i k_i \, \vec \delta_i
229 \wedge
230 \sum_i k_i = k > 0
231 \,\}
232 \end{equation}
233 and then the approximation computed in \eqref{eq:transitive:approx}
234 is essentially the same as that of \shortciteN{Beletska2009}.
235 If some of $\Delta_i$s are not singleton sets or if
236 some of $\vec \delta_i$s are parametric, then we need
237 to resort to further approximations.
238
239 To ease both the exposition and the implementation, we will for
240 the remainder of this section work with extended offsets
241 $\Delta_i' = \Delta_i \times \{\, 1 \,\}$.
242 That is, each offset is extended with an extra coordinate that is
243 set equal to one.  The paths constructed by summing such extended
244 offsets have the length encoded as the difference of their
245 final coordinates.  The path $P'$ can then be decomposed into
246 paths $P_i'$, one for each $\Delta_i$,
247 \begin{equation}
248 \label{eq:transitive:decompose}
249 P' = \left(
250 (P_m' \cup \identity) \circ \cdots \circ
251 (P_2' \cup \identity) \circ
252 (P_1' \cup \identity)
253 \right) \cap
254 \{\,
255 \vec x' \to \vec y' \mid y_{d+1} - x_{d+1} = k > 0
256 \,\}
257 ,
258 \end{equation}
259 with
260 $$
261 P_i' = \vec s \mapsto \{\, \vec x' \to \vec y' \mid
262 \exists k \in \Z_{\ge 1} :
263 \vec y' = \vec x' + k \, \Delta_i'(\vec s)
264 \,\}
265 .
266 $$
267 Note that each $P_i'$ contains paths of length at least one.
268 We therefore need to take the union with the identity relation
269 when composing the $P_i'$s to allow for paths that do not contain
270 any offsets from one or more $\Delta_i'$.
271 The path that consists of only identity relations is removed
272 by imposing the constraint $y_{d+1} - x_{d+1} > 0$.
273 Taking the union with the identity relation means that
274 that the relations we compose in \eqref{eq:transitive:decompose}
275 each consist of two basic relations.  If there are $m$
276 disjuncts in the input relation, then a direct application
277 of the composition operation may therefore result in a relation
278 with $2^m$ disjuncts, which is prohibitively expensive.
279 It is therefore crucial to apply coalescing (\autoref{s:coalescing})
280 after each composition.
281
282 Let us now consider how to compute an overapproximation of $P_i'$.
283 Those that correspond to singleton $\Delta_i$s are grouped together
284 and handled as in \eqref{eq:transitive:singleton}.
285 Note that this is just an optimization.  The procedure described
286 below would produce results that are at least as accurate.
287 For simplicity, we will assume that no constraint in $\Delta_i'$
288 involves any existentially quantified variables.  Dropping such
289 constraints results in a larger $\Delta_i'$.  An overapproximation
290 of the paths corresponding to this larger set will also be an
291 overapproximation of the paths corresponding to the original set.
292 Without existentially quantified variables, we can classify
293 the constraints of $\Delta_i'$ as follows
294 \begin{enumerate}
295 \item non-parametric constraints
296 \begin{equation}
297 \label{eq:transitive:non-parametric}
298 A_1 \vec x + \vec c_1 \geq \vec 0
299 \end{equation}
300 \item purely parametric constraints
301 \begin{equation}
302 \label{eq:transitive:parametric}
303 B_2 \vec s + \vec c_2 \geq \vec 0
304 \end{equation}
305 \item negative mixed constraints
306 \begin{equation}
307 \label{eq:transitive:mixed}
308 A_3 \vec x + B_3 \vec s + \vec c_3 \geq \vec 0
309 \end{equation}
310 such that for each row $j$ and for all $\vec s$,
311 $$
312 \Delta_i'(\vec s) \cap
313 \{\, \vec x' \to \vec y' \mid B_{3,j} \vec s + c_{3,j} > 0 \,\}
314 = \emptyset
315 $$
316 \item positive mixed constraints
317 $$
318 A_4 \vec x + B_4 \vec s + \vec c_4 \geq \vec 0
319 $$
320 such that for each row $j$, there is at least one $\vec s$ such that
321 $$
322 \Delta_i'(\vec s) \cap
323 \{\, \vec x' \to \vec y' \mid B_{4,j} \vec s + c_{4,j} > 0 \,\}
324 \ne \emptyset
325 $$
326 \end{enumerate}
327 We will use the following approximation $Q_i$ for $P_i'$:
328 \begin{equation}
329 \label{eq:transitive:Q}
330 \begin{aligned}
331 Q_i = \vec s \mapsto
332 \{\,
333 \vec x' \to \vec y'
334 \mid {} & \exists k \in \Z_{\ge 1}, \vec f \in \Z^d :
335 \vec y' = \vec x' + (\vec f, k)
336 \wedge {}
337 \\
338 &
339 A_1 \vec f + k \vec c_1 \geq \vec 0
340 \wedge
341 B_2 \vec s + \vec c_2 \geq \vec 0
342 \wedge
343 A_3 \vec f + B_3 \vec s + \vec c_3 \geq \vec 0
344 \,\}
345 .
346 \end{aligned}
347 \end{equation}
348 To prove that $Q_i$ is indeed an overapproximation of $P_i'$,
349 we need to show that for every $\vec s \in \Z^n$, for every
350 $k \in \Z_{\ge 1}$ and for every $\vec f \in k \, \Delta_i(\vec s)$
351 we have that
352 $(\vec f, k)$ satisfies the constraints in \eqref{eq:transitive:Q}.
353 If $\Delta_i(\vec s)$ is non-empty, then $\vec s$ must satisfy
354 the constraints in \eqref{eq:transitive:parametric}.
355 Each element $(\vec f, k) \in k \, \Delta_i'(\vec s)$ is a sum
356 of $k$ elements $(\vec f_j, 1)$ in $\Delta_i'(\vec s)$.
357 Each of these elements satisfies the constraints in
358 \eqref{eq:transitive:non-parametric}, i.e.,
359 $$
360 \left[
361 \begin{matrix}
362 A_1 & \vec c_1
363 \end{matrix}
364 \right]
365 \left[
366 \begin{matrix}
367 \vec f_j \\ 1
368 \end{matrix}
369 \right]
370 \ge \vec 0
371 .
372 $$
373 The sum of these elements therefore satisfies the same set of inequalities,
374 i.e., $A_1 \vec f + k \vec c_1 \geq \vec 0$.
375 Finally, the constraints in \eqref{eq:transitive:mixed} are such
376 that for any $\vec s$ in the parameter domain of $\Delta$,
377 we have $-\vec r(\vec s) \coloneqq B_3 \vec s + \vec c_3 \le \vec 0$,
378 i.e., $A_3 \vec f_j \ge \vec r(\vec s) \ge \vec 0$
379 and therefore also $A_3 \vec f \ge \vec r(\vec s)$.
380 Note that if there are no mixed constraints and if the
381 rational relaxation of $\Delta_i(\vec s)$, i.e.,
382 $\{\, \vec x \in \Q^d \mid A_1 \vec x + \vec c_1 \ge \vec 0\,\}$,
383 has integer vertices, then the approximation is exact, i.e.,
384 $Q_i = P_i'$.  In this case, the vertices of $\Delta'_i(\vec s)$
385 generate the rational cone
386 $\{\, \vec x' \in \Q^{d+1} \mid \left[
387 \begin{matrix}
388 A_1 & \vec c_1
389 \end{matrix}
390 \right] \vec x' \,\}$ and therefore $\Delta'_i(\vec s)$ is
391 a Hilbert basis of this cone \shortcite[Theorem~16.4]{Schrijver1986}.
392
393 The accurateness of the above approach
394 can be improved by also classifying the existentially
395 quantified variables into variables that are uniquely
396 determined by the parameters, variables that are independent
397 of the parameters and others.  The first set can be treated
398 as parameters and the second as variables.  Constraints involving
399 the other existentially quantified variables should continue to
400 be removed.
401
402 \subsection{Checking Exactness}
403
404 The approximation $T$ for the transitive closure $R^+$ can be obtained
405 by projecting out the parameter $k$ from the approximation $K$
406 \eqref{eq:transitive:approx} of the power $R^k$.
407 Since $K$ is an overapproximation of $R^k$, $T$ will also be an
408 overapproximation of $R^+$.
409 To check whether the results are exact, we need to consider two
410 cases depending on whether $R$ is {\em cyclic}, where $R$ is defined
411 to be cyclic if $R^+$ maps any element to itself, i.e.,
412 $R^+ \cap \identity \ne \emptyset$.
413 If $R$ is acyclic, then the inductive definition of
414 \eqref{eq:transitive:inductive} is equivalent to its completion,
415 i.e.,
416 $$
417 R^+ = R \cup \left(R \circ R^+\right)
418 $$
419 is a defining property.
420 Since $T$ is known to be an overapproximation, we only need to check
421 whether
422 $$
423 T \subseteq R \cup \left(R \circ T\right)
424 .
425 $$
426 This is essentially Theorem~5 of \shortciteN{Kelly1996closure}.
427 The only difference is that they only consider lexicographically
428 forward relations, a special case of acyclic relation.
429
430 If, on the other hand, $R$ is cyclic, then we have to resort
431 to checking whether the approximation $K$ of the power is exact.
432 Note that $T$ may be exact even if $K$ is not exact, so the check
433 is sound, but incomplete.
434 To check exactness of the power, we simply need to check
435 \eqref{eq:transitive:power}.  Since again $K$ is known
436 to be an overapproximation, we only need to check whether
437 $$
438 \begin{aligned}
439 K'|_{y_{d+1} - x_{d+1} = 1} & \subseteq R'
440 \\
441 K'|_{y_{d+1} - x_{d+1} \ge 2} & \subseteq R' \circ K'|_{y_{d+1} - x_{d+1} \ge 1}
442 ,
443 \end{aligned}
444 $$
445 where $R' = \{\, \vec x' \to \vec y' \mid \vec x \to \vec y \in R
446 \wedge y_{d+1} - x_{d+1} = 1\,\}$, i.e., $R$ extended with path
447 lengths equal to 1.
448
449 All that remains is to explain how to check the cyclicity of $R$.
450 Note that the exactness on the power is always sound, even
451 in the acyclic case, so we only need to be careful that we find
452 all cyclic cases.  Now, if $R$ is cyclic, i.e.,
453 $R^+ \cap \identity \ne \emptyset$, then, since $T$ is
454 an overapproximation of $R^+$, also
455 $T \cap \identity \ne \emptyset$.  This in turn means
456 that $\Delta \, K'$ contains a point whose first $d$ coordinates
457 are zero and whose final coordinate is positive.
458 In the implementation we currently perform this test on $P'$ instead of $K'$.
459 Note that if $R^+$ is acyclic and $T$ is not, then the approximation
460 is clearly not exact and the approximation of the power $K$
461 will not be exact either.
462
463 \subsection{Decomposing $R$ into strongly connected components}
464
465 If the input relation $R$ is a union of several basic relations
466 that can be partially ordered
467 then the accuracy of the approximation may be improved by computing
468 an approximation of each strongly connected components separately.
469 For example, if $R = R_1 \cup R_2$ and $R_1 \circ R_2 = \emptyset$,
470 then we know that any path that passes through $R_2$ cannot later
471 pass through $R_1$, i.e.,
472 $$
473 R^+ = R_1^+ \cup R_2^+ \cup \left(R_2^+ \circ R_1^+\right)
474 .
475 $$
476 We can therefore compute (approximations of) transitive closures
477 of $R_1$ and $R_2$ separately.
478 Note, however, that the condition $R_1 \circ R_2 = \emptyset$
479 is actually too strong.
480 If $R_1 \circ R_2$ is a subset of $R_2 \circ R_1$
481 then we can reorder the segments
482 in any path that moves through both $R_1$ and $R_2$ to
483 first move through $R_1$ and then through $R_2$.
484
485 This idea can be generalized to relations that are unions
486 of more than two basic relations by constructing the
487 strongly connected components in the graph with as vertices
488 the basic relations and an edge between two basic relations
489 $R_i$ and $R_j$ if $R_i$ needs to follow $R_j$ in some paths.
490 That is, there is an edge from $R_i$ to $R_j$ iff
491 \begin{equation}
492 \label{eq:transitive:edge}
493 R_i \circ R_j
494 \not\subseteq
495 R_j \circ R_i
496 .
497 \end{equation}
498 The components can be obtained from the graph by applying
499 Tarjan's algorithm \shortcite{Tarjan1972}.
500
501 In practice, we compute the (extended) powers $K_i'$ of each component
502 separately and then compose them as in \eqref{eq:transitive:decompose}.
503 Note, however, that in this case the order in which we apply them is
504 important and should correspond to a topological ordering of the
505 strongly connected components.  Simply applying Tarjan's
506 algorithm will produce topologically sorted strongly connected components.
507 The graph on which Tarjan's algorithm is applied is constructed on-the-fly.
508 That is, whenever the algorithm checks if there is an edge between
509 two vertices, we evaluate \eqref{eq:transitive:edge}.
510 The exactness check is performed on each component separately.
511 If the approximation turns out to be inexact for any of the components,
512 then the entire result is marked inexact and the exactness check
513 is skipped on the components that still need to be handled.
514
515 \begin{figure}
516 \begin{center}
517 \begin{tikzpicture}[x=0.5cm,y=0.5cm,>=stealth,shorten >=1pt]
518 \foreach \x in {1,...,10}{
519     \foreach \y in {1,...,10}{
520         \draw[->] (\x,\y) -- (\x,\y+1);
521     }
522 }
523 \foreach \x in {1,...,20}{
524     \foreach \y in {5,...,15}{
525         \draw[->] (\x,\y) -- (\x+1,\y);
526     }
527 }
528 \end{tikzpicture}
529 \end{center}
530 \caption{The relation from \autoref{ex:closure4}}
531 \label{f:closure4}
532 \end{figure}
533 \begin{example}
534 \label{ex:closure4}
535 Consider the relation in example {\tt closure4} that comes with
536 the Omega calculator~\shortcite{Omega_calc}, $R = R_1 \cup R_2$,
537 with
538 $$
539 \begin{aligned}
540 R_1 & = \{\, (x,y) \to (x,y+1) \mid 1 \le x,y \le 10 \,\}
541 \\
542 R_2 & = \{\, (x,y) \to (x+1,y) \mid 1 \le x \le 20 \wedge 5 \le y \le 15 \,\}
543 .
544 \end{aligned}
545 $$
546 This relation is shown graphically in \autoref{f:closure4}.
547 We have
548 $$
549 \begin{aligned}
550 R_1 \circ R_2 &=
551 \{\, (x,y) \to (x+1,y+1) \mid 1 \le x \le 9 \wedge 5 \le y \le 10 \,\}
552 \\
553 R_2 \circ R_1 &=
554 \{\, (x,y) \to (x+1,y+1) \mid 1 \le x \le 10 \wedge 4 \le y \le 10 \,\}
555 .
556 \end{aligned}
557 $$
558 Clearly, $R_1 \circ R_2 \subseteq R_2 \circ R_1$ and so
559 $$
560 \left(
561 R_1 \cup R_2
562 \right)^+
563 =
564 \left(R_2^+ \circ R_1^+\right)
565 \cup R_1^+
566 \cup R_2^+
567 .
568 $$
569 \end{example}
570
571 \begin{figure}
572 \newcounter{n}
573 \newcounter{t1}
574 \newcounter{t2}
575 \newcounter{t3}
576 \newcounter{t4}
577 \begin{center}
578 \begin{tikzpicture}[>=stealth,shorten >=1pt]
579 \setcounter{n}{7}
580 \foreach \i in {1,...,\value{n}}{
581     \foreach \j in {1,...,\value{n}}{
582         \setcounter{t1}{2 * \j - 4 - \i + 1}
583         \setcounter{t2}{\value{n} - 3 - \i + 1}
584         \setcounter{t3}{2 * \i - 1 - \j + 1}
585         \setcounter{t4}{\value{n} - \j + 1}
586         \ifnum\value{t1}>0\ifnum\value{t2}>0
587         \ifnum\value{t3}>0\ifnum\value{t4}>0
588             \draw[thick,->] (\i,\j) to[out=20] (\i+3,\j);
589         \fi\fi\fi\fi
590         \setcounter{t1}{2 * \j - 1 - \i + 1}
591         \setcounter{t2}{\value{n} - \i + 1}
592         \setcounter{t3}{2 * \i - 4 - \j + 1}
593         \setcounter{t4}{\value{n} - 3 - \j + 1}
594         \ifnum\value{t1}>0\ifnum\value{t2}>0
595         \ifnum\value{t3}>0\ifnum\value{t4}>0
596             \draw[thick,->] (\i,\j) to[in=-20,out=20] (\i,\j+3);
597         \fi\fi\fi\fi
598         \setcounter{t1}{2 * \j - 1 - \i + 1}
599         \setcounter{t2}{\value{n} - 1 - \i + 1}
600         \setcounter{t3}{2 * \i - 1 - \j + 1}
601         \setcounter{t4}{\value{n} - 1 - \j + 1}
602         \ifnum\value{t1}>0\ifnum\value{t2}>0
603         \ifnum\value{t3}>0\ifnum\value{t4}>0
604             \draw[thick,->] (\i,\j) to (\i+1,\j+1);
605         \fi\fi\fi\fi
606     }
607 }
608 \end{tikzpicture}
609 \end{center}
610 \caption{The relation from \autoref{ex:decomposition}}
611 \label{f:decomposition}
612 \end{figure}
613 \begin{example}
614 \label{ex:decomposition}
615 Consider the relation on the right of \shortciteN[Figure~2]{Beletska2009},
616 reproduced in \autoref{f:decomposition}.
617 The relation can be described as $R = R_1 \cup R_2 \cup R_3$,
618 with
619 $$
620 \begin{aligned}
621 R_1 &= n \mapsto \{\, (i,j) \to (i+3,j) \mid
622 i \le 2 j - 4 \wedge
623 i \le n - 3 \wedge
624 j \le 2 i - 1 \wedge
625 j \le n \,\}
626 \\
627 R_2 &= n \mapsto \{\, (i,j) \to (i,j+3) \mid
628 i \le 2 j - 1 \wedge
629 i \le n \wedge
630 j \le 2 i - 4 \wedge
631 j \le n - 3 \,\}
632 \\
633 R_3 &= n \mapsto \{\, (i,j) \to (i+1,j+1) \mid
634 i \le 2 j - 1 \wedge
635 i \le n - 1 \wedge
636 j \le 2 i - 1 \wedge
637 j \le n - 1\,\}
638 .
639 \end{aligned}
640 $$
641 The figure shows this relation for $n = 7$.
642 Both
643 $R_3 \circ R_1 \subseteq R_1 \circ R_3$
644 and
645 $R_3 \circ R_2 \subseteq R_2 \circ R_3$,
646 which the reader can verify using the {\tt iscc} calculator:
647 \begin{verbatim}
648 R1 := [n] -> { [i,j] -> [i+3,j] : i <= 2 j - 4 and i <= n - 3 and
649                                   j <= 2 i - 1 and j <= n };
650 R2 := [n] -> { [i,j] -> [i,j+3] : i <= 2 j - 1 and i <= n and
651                                   j <= 2 i - 4 and j <= n - 3 };
652 R3 := [n] -> { [i,j] -> [i+1,j+1] : i <= 2 j - 1 and i <= n - 1 and
653                                     j <= 2 i - 1 and j <= n - 1 };
654 (R1 . R3) - (R3 . R1);
655 (R2 . R3) - (R3 . R2);
656 \end{verbatim}
657 $R_3$ can therefore be moved forward in any path.
658 For the other two basic relations, we have both
659 $R_2 \circ R_1 \not\subseteq R_1 \circ R_2$
660 and
661 $R_1 \circ R_2 \not\subseteq R_2 \circ R_1$
662 and so $R_1$ and $R_2$ form a strongly connected component.
663 By computing the power of $R_3$ and $R_1 \cup R_2$ separately
664 and composing the results, the power of $R$ can be computed exactly
665 using \eqref{eq:transitive:singleton}.
666 As explained by \shortciteN{Beletska2009}, applying the same formula
667 to $R$ directly, without a decomposition, would result in
668 an overapproximation of the power.
669 \end{example}