LARA

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
sav07_lecture_9 [2007/04/19 11:13]
vkuncak
sav07_lecture_9 [2007/05/11 17:26] (current)
ghid.maatouk old revision restored
Line 32: Line 32:
 \end{equation*} \end{equation*}
 where $a^1,​\ldots,​a^n$ are variables ranging over a lattice $A$ (one for each control-flow graph node), and $f_k$ are monotonic functions on $A$ (one for each edge in the control-flow graph). where $a^1,​\ldots,​a^n$ are variables ranging over a lattice $A$ (one for each control-flow graph node), and $f_k$ are monotonic functions on $A$ (one for each edge in the control-flow graph).
 +
  
  
Line 104: Line 105:
 === Narrowing === === Narrowing ===
  
-Once we have reached above the fixpoint (using widening or anything else), we can always apply the fixpoint ​transformer ​and improve the precision of the results.+Once we have reached above the fixpoint (using widening or anything else), we can always apply the fixpoint ​operator $G$ and improve the precision of the results. 
 + 
 +If this is too slow, we can stop at any point or use a narrowing operator, the result is sound. 
 + 
 +Instead of using the fixpoint operator $G$, we can use any operator that leaves our current value above fixpoint. 
 + 
 +See Combination of Abstractions in ASTREE, Section 8.1, define $\Delta$ such that $\gamma(a) \cap \gamma(b) \subseteq \gamma(a \Delta b)$ 
 +  * example: take $\sqcap$ as $\Delta$, or even some improved version
  
 === Reduced product === === Reduced product ===
Line 116: Line 124:
 Reduced product: [[http://​www.di.ens.fr/​~cousot/​COUSOTpapers/​POPL79.shtml|Systematic Design of Program Analysis Frameworks]],​ Section 10.1. Reduced product: [[http://​www.di.ens.fr/​~cousot/​COUSOTpapers/​POPL79.shtml|Systematic Design of Program Analysis Frameworks]],​ Section 10.1.
  
 +Key point: define $\sigma : A_1 \times A_2 \to A_1 \times A_2$ by 
 +\begin{equation*} 
 +  \sigma(a_1,​a_2) = \sqcap \{ (a_1',​a_2'​) \mid \gamma(a_1'​) \cap \gamma(a_2'​) = \gamma(a_1) \cap \gamma(a_2) \} 
 +\end{equation*} 
 +The function $\sigma$ improves the precision of the element of the lattice without changing its meaning. ​ Subsequent computations with these values then give more precise results.