Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
sav08:chaotic_iteration_in_abstract_interpretation [2008/05/20 13:08] vkuncak |
sav08:chaotic_iteration_in_abstract_interpretation [2008/05/20 13:32] vkuncak |
||
---|---|---|---|
Line 30: | Line 30: | ||
\begin{array}{ll} | \begin{array}{ll} | ||
g^{k+1}_i = H_i(g^k_1,\ldots,g^k_n) \\ | g^{k+1}_i = H_i(g^k_1,\ldots,g^k_n) \\ | ||
- | g^{k+1}_j = g^k_j, \mbox{ for } j \neq i & \mbox{\bf chaotic iteration} | + | & \mbox{\bf chaotic iteration} \\ |
+ | g^{k+1}_j = g^k_j, \mbox{ for } j \neq i | ||
\end{array} | \end{array} | ||
\] | \] | ||
- | here we require that the new value $H_i(g^k_1,\ldots,g^k_n)$ differs from the old one $g^k_i$, otherwise we select a different one. | + | here we require that the new value $H_i(g^k_1,\ldots,g^k_n)$ differs from the old one $g^k_i$. An iteration where at each step we select some equation $i$ (arbitrarily) is called //chaotic iteration//. It is abstract representation of different iteration strategies. |
- | Then we pick a different $i$, as long as the result changes. This is //chaotic iteration//. | + | |
Questions: | Questions: | ||
Line 50: | Line 50: | ||
Compare values $I$, $L_1$, $C_1$, $I_n$, $C_n$ in the lattice | Compare values $I$, $L_1$, $C_1$, $I_n$, $C_n$ in the lattice | ||
- | * in general | + | * in general ++|$C_1 \sqsubseteq L_1$, generally $C_i \sqsubseteq L_i$ ++ |
- | * when selecting equations by fixed permutation | + | * when selecting equations by fixed permutation ++| $L_1 \sqsubseteq C_n$, generally $L_i \sqsubseteq C_{ni}$ ++ |
==== Worklist Algorithm and Iteration Strategies ==== | ==== Worklist Algorithm and Iteration Strategies ==== | ||
Line 66: | Line 66: | ||
Algorithm terminates when worklist is empty (no more changes) | Algorithm terminates when worklist is empty (no more changes) | ||
- | Iteration strategies: | + | Useful iteration strategy: reverse postorder and strongly connected components |
- | * LIFO, FIFO, | + | |
- | * reverse postorder | + | Reverse postorder: follow changes through successors in the graph |
- | * round robin | + | |
- | * strongly connected components | + | Strongly connected component (SCC) of a directed graph: path between each two nodes of component. |
+ | * compute until fixpoint within each SCC | ||
===== References ===== | ===== References ===== |