<aside> š” Key Points
Given a CFG (program) with k nodes, the iterative algorithm updates OUT[n] for every node n in each iteration.
Assume the domain of the values in data flow analysis is V, then we can define a k-tuple
$$ \rm (OUT[n_1 ], OUT[n_2 ], ā¦, OUT[n_k ]) $$
as an element of set $(V_1 Ć V_2 ā¦ Ć V_k )$ denoted as $V^k$ , to hold the values of the analysis after each iteration.
Each iteration can be considered as taking an action to map an element of $V^k$ to a new element of $V^k$ , through applying the transfer functions and control-flow handing, abstracted as a function $F: V^k ā V^k$
Then the algorithm outputs a series of k-tuples iteratively until a k-tuple is the same as the last one in two consecutive iterations
$$ \begin{aligned} &\mathrm{X~is~a~fixed~point~of~function~F~if~\blue{X=F(X)}} \\ &\mathrm{The~iterative~algorithm~reaches~a~\orange{fixed~point}} \\ \end{aligned} $$
<aside> š” Fundamental problems to be solved
We define poset as a pair $(P, ā)$ where $ā$ is a binary relation that defines a partial ordering over P, and ā has the following properties:
$$ \begin{aligned}
&\mathrm{(1)~āx ā P;~x ā x~} &\textrm{(Reflexivity)} \\
&\mathrm{(2)~āx, y ā P;~x ā y ā§ y ā x ā¹ x = y~} &\textrm{(Antisymmetry)} \\
&\mathrm{(3)~āx, y, z ā P;~x ā y ā§ y ā z ā¹ x ā z~} &\textrm{(Transitivity)} \\ \end{aligned} $$
Given a poset (P, ā) and its subset S that S ā P, we say that
$$
\begin{aligned}&u\in P\mathrm{~is~an~\red{upper~bound}~of~S,~if~āxāS,xāu.~} \\ &\mathrm{Similarly,~l~ā~P~is~an~\blue{lower~bound}~of~S,~if~āxāS,~lāx.} \\ \end{aligned} $$