From Program slicing to Abstract Interpretation. Dr. Manuel Oriol. Topics. Program Slicing Static Dynamic Abstract Interpretation Soundness Completeness. Program slicing. A technique for analyzing programs regarding to a specific criterion.
Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
From Program slicing to Abstract Interpretation
Dr. Manuel Oriol
A statement, a point in the program
The set of variables that matter
The set of variables that matter
Input of the program
Statement S in qth position
How is this called?
Homomorphism
next
State
State
α
α
γ
next
Abstract State
Abstract State
α: abstraction function
γ: concretization function
Set of abstract values:
AV::= {+, , 0}
Expressions:
e::= e * e  ai∈ AV
Language:
aeval: e > AV
aeval(i>0) = +
aeval(i<0) = 
aeval(i=0) = 0
aeval(e1*e2) = aeval(e1)*aeval(e2)
where +* = 
+*+=+
*=+
0*av=0
av*0=0
Adding unary minus?
How is this called?
SemiHomomorphism
next
State
State
α
α
⊆
next
Abstract State
Abstract State
Set of abstract values:
AV::= {+, , 0, T}
Expressions:
e::= e * e  e  e + e  av∈ AV
Language:
aeval: e > AV
aeval(integer) = … as before
aeval(e1*e2) = … as before
aeval(e) = … easy ;)
aeval(e1+e2) = aeval(e1)+aeval(e2)
where + +  = T
+ + + = +
 +  = 
0+av=av
av+0=av
Set of abstract values:
AV::= {+, , 0, T, ⊥}
Expressions:
e::= e * e  e  e + e  e/e  av∈ AV
Language:
aeval: e > AV
aeval(integer) = … as before
aeval(e1*e2) = … as before
aeval(e) = … easy ;)
aeval(e1/e2) = aeval(e1)/aeval(e2)
where av/0 = ⊥
av+ ⊥= ⊥
…
T

+
0
⊥
Set of abstract values:
AV::= {true,false,T, ^}
Expressions:
e::= e * e  e  e + e  e/e  ai∈ AV
Language:
aeval: e > AV
aeval(3) = yes
aeval(e1*e2) = yes iffaeval(e1)=yes or
aeval(e2)=yes
aeval(e) = … easy ;)
aeval(e1+e2) = aeval(e1) and aeval(e2)
aeval(e1/e2) = true if aeval(e1) and
not aeval(e2)