<div dir="ltr">Aleksandar,<div><br></div><div>Yes, the closest is soot.jimple.toolkits.annotation.parity.ParityAnalysis. However, Parity analysis is somewhat different from Interval analysis mainly because Parity analysis propagates abstract elements that create a complete lattice, i.e, bot, even, odd, top. So, when two flows are merged where one carrying even value and another carrying odd value, then the resulting value (up the lattice) is top, which allows for analysis termination. </div><div><br></div><div>But in case of Interval analysis at each merge of flows the interval might increase just by a little bit, which not enough to reach fix point on its own. For example, on the first loop iteration the flow with interval [0,1] is merged with the flow with interval [0,2], which gives [0,3], on the next one [0,3] is merged with [0,4], on the third [0,4] with [0,5] and so on. Thus the analysis will not terminate. For this type of abstract domains (numerical domains) one needs to introduce a widening operator which allows for the interval to reach value, like [0, inifity) in our example, so the analysis will terminate. These types of domains also have narrowing operators that are used to gain some precision. </div><div><br></div><div>As you could see ForwardFlowAnalysis does not have abstract methods to implement widening and narrowing operators, hence more likely not suitable for numerical domains as is, and require some advanced work on your side if you want to implement Interval analysis by extending ForwardFlowAnalysis. I know that Jlint tool (written in C++) uses interval analysis in its framework. You can look at their code and see how they&#39;ve implemented it there.</div><div><br></div><div>Hope it helps,</div><div>Elena Sherman</div>







<div><div><br></div><div><br></div><div><div><br></div><div><br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 20, 2015 at 2:26 AM, Aleksandar Dimovski <span dir="ltr">&lt;<a href="mailto:aleks.dimovski@googlemail.com" target="_blank">aleks.dimovski@googlemail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><p class="MsoNormal"><span lang="EN-US">Dear all,</span></p><p class="MsoNormal"><span lang="EN-US"><br></span></p>

<p class="MsoNormal" style="text-align:justify"><span lang="EN-US">I would like to ask whether there exists an implementation
for intra-procedural Interval analysis in SOOT framework, where for every
variable a lower and an upper bound for its possible values are tracked. I cannot
find it in </span><span lang="EN-US">soot.toolkits.scalar.ForwardFlowAnalysis. Maybe the closest to it is Parity
Analysis. <br></span></p><p class="MsoNormal" style="text-align:justify"><span lang="EN-US"><br></span></p>

<p class="MsoNormal" style="text-align:justify"><span lang="EN-US">You can also refer to me some
other similar </span><span lang="EN-US">intra-procedural</span><span lang="EN-US"> analysis
that tracks for each variable property from some very rich lattice (with large
height).</span></p>

<p class="MsoNormal" style="text-align:justify"><span lang="EN-US"><br></span></p><p class="MsoNormal" style="text-align:justify"><span lang="EN-US">Thank you in advance,</span></p>

<p class="MsoNormal" style="text-align:justify"><span lang="EN-US">Aleksandar Dimovski</span></p></div></div>
<br>_______________________________________________<br>
Soot-list mailing list<br>
<a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br>
<a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" rel="noreferrer" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
<br></blockquote></div><br></div>