« A Tutorial on Abstract Interpretation » Patrick Cousot École normale supérieure 45 rue d’Ulm 75230 Paris cedex 05, France [email protected]www.di.ens.fr/ ~ cousot VMCAI’05 Industrial Day VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 1 — ľ P. Cousot
168
Embed
«ATutorialon Abstract Interpretationhomepage.cs.uiowa.edu/~tinelli/classes/seminar/Cousot--A Tutorial on AI.pdfStatic analysis by abstract interpretation VMCAI’05 Industrial Day,
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 2 — ! P. Cousot
Example of static analysis (input){n0>=0}n := n0;
{n0=n,n0>=0}i := n;
{n0=i,n0=n,n0>=0}while (i <> 0 ) do
{n0=n,i>=1,n0>=i}j := 0;
{n0=n,j=0,i>=1,n0>=i}while (j <> i) do
{n0=n,j>=0,i>=j+1,n0>=i}j := j + 1
{n0=n,j>=1,i>=j,n0>=i}od;
{n0=n,i=j,i>=1,n0>=i}i := i - 1
{i+1=j,n0=n,i>=0,n0>=i+1}od
{n0=n,i=0,n0>=0}
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 3 — ! P. Cousot
Example of static analysis (output){n0>=0}n := n0;
{n0=n,n0>=0}i := n;
{n0=i,n0=n,n0>=0}while (i <> 0 ) do
{n0=n,i>=1,n0>=i}j := 0;
{n0=n,j=0,i>=1,n0>=i}while (j <> i) do
{n0=n,j>=0,i>=j+1,n0>=i}j := j + 1
{n0=n,j>=1,i>=j,n0>=i}od;
{n0=n,i=j,i>=1,n0>=i}i := i - 1
{i+1=j,n0=n,i>=0,n0>=i+1}od
{n0=n,i=0,n0>=0}
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 3 — ! P. Cousot
Example of static analysis (safety){n0>=0}n := n0;
{n0=n,n0>=0}i := n; n0 must be initially nonnegative
(otherwise the program does notterminate properly)
{n0=i,n0=n,n0>=0}while (i <> 0 ) do
{n0=n,i>=1,n0>=i}j := 0;
{n0=n,j=0,i>=1,n0>=i}while (j <> i) do
{n0=n,j>=0,i>=j+1,n0>=i}j := j + 1 j < n0 so no upper overflow
{n0=n,j>=1,i>=j,n0>=i}od;
{n0=n,i=j,i>=1,n0>=i}i := i - 1 i > 0 so no lower overflow
{i+1=j,n0=n,i>=0,n0>=i+1}od
{n0=n,i=0,n0>=0}
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 3 — ! P. Cousot
Static analysis by abstract interpretation
Verification: define and prove automatically a property ofthe possible behaviors of a complex computer pro-gram (example: program semantics);
Abstraction: the reasoning/calculus can be done on an ab-straction of these behaviors dealing only with thoseelements of the behaviors related to the consideredproperty;
Theory: abstract interpretation.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 4 — ! P. Cousot
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 5 — ! P. Cousot
A very informal introductionto the principles ofabstract interpretation
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 6 — ! P. Cousot
Semantics
The concrete semantics of a program formalizes (is amathematical model of) the set of all its possible execu-tions in all possible execution environments.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 7 — ! P. Cousot
Graphic example: Possible behaviors
x(t)
t
!"##$%&'()*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 8 — ! P. Cousot
Undecidability
– The concrete mathematical semantics of a program isan “tinfinite” mathematical object, not computable;– All non trivial questions on the concrete program se-mantics are undecidable.Example: termination– Assume termination(P) would always terminates andreturns true i" P always terminates on all input data;– The following program yields a contradiction
P ” while termination(P) do skip od.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 9 — ! P. Cousot
Graphic example: Safety properties
The safety properties of a program express that no possi-ble execution in any possible execution environment canreach an erroneous state.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 10 — ! P. Cousot
Graphic example: Safety property
x(t)
t
."*%$//'0(1"0'
!"##$%&'()*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 11 — ! P. Cousot
Safety proofs
– A safety proof consists in proving that the intersectionof the program concrete semantics and the forbiddenzone is empty;– Undecidable problem (the concrete semantics is notcomputable);– Impossible to provide completely automatic answerswith finite computer resources and neither human in-teraction nor uncertainty on the answer 1.
1 e.g. probabilistic answer.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 12 — ! P. Cousot
Test/debugging
– consists in considering a subset of the possible execu-tions;– not a correctness proof;– absence of coverage is the main problem.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 13 — ! P. Cousot
Graphic example: Property test/simulation
x(t)
t
2'#)("3(+(3'4()*+,'-)"*$'#
."*%$//'0(1"0'
!"##$%&'()*+,'-)"*$'#
5**"*(666
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 14 — ! P. Cousot
Abstract interpretation
– consists in considering an abstract semantics, that isto say a superset of the concrete semantics of the pro-gram;– hence the abstract semantics covers all possible con-crete cases;– correct: if the abstract semantics is safe (does not in-tersect the forbidden zone) then so is the concrete se-mantics
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 15 — ! P. Cousot
Graphic example: Abstract interpretation
x(t)
t
7%#)*+-)$"0("3()8'()*+,'-)"*$'#
."*%$//'0(1"0'
!"##$%&'()*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 16 — ! P. Cousot
Formal methods
Formal methods are abstract interpretations, which dif-fer in the way to obtain the abstract semantics:– “model checking”:- the abstract semantics is given manually by the user;- in the form of a finitary model of the program exe-cution;- can be computed automatically, by techniques rele-vant to static analysis.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 17 — ! P. Cousot
– “deductive methods”:- the abstract semantics is specified by verification con-ditions;- the user must provide the abstract semantics in theform of inductive arguments (e.g. invariants);- can be computed automatically by methods relevantto static analysis.
– “static analysis”: the abstract semantics is computedautomatically from the program text according to pre-defined abstractions (that can sometimes be tailoredautomatically/manually by the user).
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 18 — ! P. Cousot
Required properties of the abstract semantics
– sound so that no possible error can be forgotten;– precise enough (to avoid false alarms);– as simple/abstract as possible (to avoid combinatorialexplosion phenomena).
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 19 — ! P. Cousot
Graphic example: The most abstract correctand precise semantics
x(t)
t
."*%$//'0(1"0'
!"##$%&'()*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 20 — ! P. Cousot
Graphic example: Erroneous abstraction — I
x(t)
t
5**"0'"9#()*+,'-)"*:(+%#)*+-)$"0
."*%$//'0(1"0'
!"##$%&'()*+,'-)"*$'#
5**"*(666
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 21 — ! P. Cousot
Graphic example: Erroneous abstraction — II
x(t)
t
5**"0'"9#()*+,'-)"*:(+%#)*+-)$"0
."*%$//'0(1"0'
!"##$%&'()*+,'-)"*$'#
5**"*(666
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 22 — ! P. Cousot
Graphic example: Imprecision ) false alarms
x(t)
t
;<=*'-$#'()*+,'-)"*:(+%#)*+-)$"0
."*%$//'0(1"0'
!"##$%&'()*+,'-)"*$'#
.+&#'(+&+*<
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 23 — ! P. Cousot
Abstract domains
Standard abstractions– that serve as a basis for the design of static analyzers:- abstract program data,- abstract program basic operations;- abstract program control (iteration, procedure, con-currency, . . . );
– can be parametrized to allow for manual adaptationto the application domains.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 24 — ! P. Cousot
Graphic example: Standard abstractionby intervals
x(t)
t
;<=*'-$#'()*+,'-)"*:(+%#)*+-)$"0(%:($0)'*>+&#
."*%$//'0(1"0'
!"##$%&'()*+,'-)"*$'#
.+&#'(+&+*<#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 25 — ! P. Cousot
Graphic example: A more refined abstraction
x(t)
t
?'3$0'<'0)("3($0)'*>+&#
."*%$//'0(1"0'
!"##$%&'()*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 26 — ! P. Cousot
A very informal introductionto static analysisalgorithms
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 27 — ! P. Cousot
Standard operational semantics
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 28 — ! P. Cousot
Standard semantics
– Start from a standard operational semantics that de-scribes formally:- states that is data values of program variables,- transitions that is elementary computation steps;– Consider traces that is successions of states correspond-ing to executions described by transitions (possibly in-finite).
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 29 — ! P. Cousot
Graphic example: Small-steps transitionsemantics
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 30 — ! P. Cousot
Example: Small-steps transition semantics ofan assignment
int x;...l:
x := x + 1;l’:
fl : x = v ! l0 : x = v + 1 j v 2 [min_int; max_int` 1]g[ fl : x = max_int! l0 : x = ˙g (runtime error)
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 31 — ! P. Cousot
l1 : : : :l1 : x = `1l1 : x = 0l1 : x = 1l1 : : : :
3
777775
&!%
l2 : x = 1
l2 : x = 1! l3 : x = 1l3 : x = 1! l4 : x = 2l4 : x = 2! l3 : x = 2l3 : x = 2! l4 : x = 3: : :l4 : x = 10! l5 : x = 10
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 32 — ! P. Cousot
Example: Trace semantics of loop
l1:x := 1;
l2:while x < 10 do
l3:x := x + 1
l4:od
l5:l1 : : : :l1 : x = `1l1 : x = 0l1 : x = 1l1 : : : :
3
777775
&!%
l2 : x = 1! l3 : x = 1! l4 : x = 2!
l3 : x = 2! l4 : x = 3 : : :! l4 : x = 10! l5 : x = 10VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 33 — ! P. Cousot
Transition systems
– hS; t!i where:- S is a set of states/vertices/. . .
- t! 2 }(SˆS) is a transition relation/set of arcs/. . .
t
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 34 — ! P. Cousot
Collecting semanticsin fixpoint form
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 35 — ! P. Cousot
Collecting semantics
– consider all traces simultaneously;– collecting semantics:- sets of states that describe data values of programvariables on all possible trajectories;- set of states transitions that is simultaneous elemen-tary computation steps on all possible trajectories;
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 36 — ! P. Cousot
Graphic example: sets of states
x(t)
t
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 37 — ! P. Cousot
Graphic example: set of states transitions
x(t)
t
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 38 — ! P. Cousot
Example: Reachable states of a transitionsystem
I
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 39 — ! P. Cousot
Reachable states in fixpoint form
F (X) = I [ fs0 j 9s 2 X : s t! s0g
R = lfp„
; F
=+1[
n=0
Fn(;) where f0(x) = xfn+1(x) = f(fn(x))
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 40 — ! P. Cousot
Example of fixpoint iterationfor reachable states lfp
„; –X
. I [ fs0 j 9s 2 X : s t! s0g
I
F ! " F ! " F ! " F ! "# $ %@ A B 0
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 41 — ! P. Cousot
Example of fixpoint iterationfor reachable states lfp
„; –X
. I [ fs0 j 9s 2 X : s t! s0g
!
F ! " F ! " F ! " F ! "# $ %@ A B 0
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 41 — ! P. Cousot
Example of fixpoint iterationfor reachable states lfp
„; –X
. I [ fs0 j 9s 2 X : s t! s0g
!
F ! " F ! " F ! " F ! "# $ %@ A B 0
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 41 — ! P. Cousot
Example of fixpoint iterationfor reachable states lfp
„; –X
. I [ fs0 j 9s 2 X : s t! s0g
!
F ! " F ! " F ! " F ! "# $ %@ A B 0
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 41 — ! P. Cousot
Example of fixpoint iterationfor reachable states lfp
„; –X
. I [ fs0 j 9s 2 X : s t! s0g
!
F ! " F ! " F ! " F ! "# $ %@ A B 0
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 41 — ! P. Cousot
Abstraction by Galois connections
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 42 — ! P. Cousot
Abstracting sets (i.e. properties)
– Choose an abstract domain, replacing sets of objects(states, traces, . . . ) S by their abstraction ¸(S)– The abstraction function ¸ maps a set of concrete ob-jects to its abstract interpretation;– The inverse concretization function ‚ maps an abstractset of objects to concrete ones;– Forget no concrete objects: (abstraction from above)S „ ‚(¸(S)).
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 43 — ! P. Cousot
Interval abstraction ¸
!
"
!!"
#
$$
fx : [1; 99]; y : [2; 77]g
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 44 — ! P. Cousot
Interval concretization ‚
!
"
!!"
#
$$
fx : [1; 99]; y : [2; 77]g
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 45 — ! P. Cousot
The abstraction ¸ is monotone
!
"
!!"
#
%&
&!''
("
!)
fx : [33; 89]; y : [48; 61]gv
fx : [1; 99]; y : [2; 90]g
X „ Y ) ¸(X) v ¸(Y )
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 46 — ! P. Cousot
The concretization ‚ is monotone
fx : [33; 89]; y : [48; 61]gv
fx : [1; 99]; y : [2; 90]g
X v Y ) ‚(X) „ ‚(Y )
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 47 — ! P. Cousot
The ‚ ‹ ¸ composition is extensive
!
"
!!"
#
$$
fx : [1; 99]; y : [2; 77]g
X „ ‚ ‹ ¸(X)
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 48 — ! P. Cousot
The ¸ ‹ ‚ composition is reductive
!
"
!!"
#
$$
fx : [1; 99]; y : [2; 77]g==v
fx : [1; 99]; y : [2; 77]g
¸ ‹ ‚(Y ) ==v Y
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 49 — ! P. Cousot
Correspondance between concrete andabstract properties
– The pair h¸; ‚i is a Galois connection:
h}(S); „i ` ! `¸‚hD; vi
– h}(S); „i ``!! ``¸
‚hD; vi when ¸ is onto (equivalently
¸ ‹ ‚ = 1 or ‚ is one-to-one).
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 50 — ! P. Cousot
Galois connection
hD;„i ` ! `¸‚hD;vi
i" 8x; y 2 D : x „ y =) ¸(x) v ¸(y)
^ 8x; y 2 D : x v y =) ‚(x) „ ‚(y)^ 8x 2 D : x „ ‚(¸(x))
^ 8y 2 D : ¸(‚(y)) v x
i" 8x 2 D; y 2 D : ¸(x) v y () x „ ‚(y)
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 51 — ! P. Cousot
Graphic example: Interval abstraction
x(t)
t;0)'*>+&(4$)8(#=9*$"9#(#)+)'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 52 — ! P. Cousot
Graphic example: Abstract transitions
x(t)
t;0)'*>+&()*+0#$)$"0
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 53 — ! P. Cousot
no overflowX2 = [1; 9999]X3 = [2;+10000]X4 = [+10000;+10000]
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 79 — ! P. Cousot
Refinement of abstractions
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 80 — ! P. Cousot
Approximations of an [in]finite set of points:from above
x
y
f: : : ; h19; 77i; : : : ;h20; 03i; : : :g
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 81 — ! P. Cousot
Approximations of an [in]finite set of points:from above
x
y
?
?
??
?
?
??
?
?
f: : : ; h19; 77i; : : : ;
h20; 03i; h?; ?i; : : :g
From Below: dual 2 + combinations.
2 Trivial for finite states (liveness model-checking), more di!cult for infinite states (variant functions).
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 82 — ! P. Cousot
E"ective computable approximations of an[in]finite set of points; Signs 3
x
y!x – 0y – 0
3 P. Cousot & R. Cousot. Systematic design of program analysis frameworks. ACM POPL’79, pp. 269–282,1979.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 83 — ! P. Cousot
E"ective computable approximations of an[in]finite set of points; Intervals 4
x
y!x 2 [19; 77]y 2 [20; 03]
4 P. Cousot & R. Cousot. Static determination of dynamic properties of programs. Proc. 2nd Int. Symp. onProgramming, Dunod, 1976.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 84 — ! P. Cousot
E"ective computable approximations of an[in]finite set of points; Octagons 5
x
y
8>>><
>>>:
1 » x » 9x+ y » 771 » y » 9x` y » 99
5 A. Miné. A New Numerical Abstract Domain Based on Di!erence-Bound Matrices. PADO ’2001.LNCS 2053, pp. 155–172. Springer 2001. See the The Octagon Abstract Domain Library onhttp://www.di.ens.fr/~mine/oct/
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 85 — ! P. Cousot
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 91 — ! P. Cousot
Graphic example: Partitionning
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 92 — ! P. Cousot
Graphic example: partitionned upward itera-tion with widening
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 93 — ! P. Cousot
Graphic example: partitionned upward itera-tion with widening
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 93 — ! P. Cousot
Graphic example: partitionned upward itera-tion with widening
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 93 — ! P. Cousot
Graphic example: partitionned upward itera-tion with widening
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 93 — ! P. Cousot
Graphic example: partitionned upward itera-tion with widening
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 93 — ! P. Cousot
Graphic example: partitionned upward itera-tion with widening
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 93 — ! P. Cousot
Graphic example: partitionned upward itera-tion with widening
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 93 — ! P. Cousot
Graphic example: partitionned upward itera-tion with widening
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 93 — ! P. Cousot
Graphic example: partitionned upward itera-tion with widening
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 93 — ! P. Cousot
Graphic example: partitionned upward itera-tion with widening
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 93 — ! P. Cousot
Graphic example: partitionned upward itera-tion with widening
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 93 — ! P. Cousot
Graphic example: safety verification
x(t)
t
!"##$%&'(/$#-*')'(
)*+,'-)"*$'#
."*%$//'0(1"0'
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 94 — ! P. Cousot
Examples of partitionnings
– sets of control states: attach local information to pro-gram points instead of global information for the wholeprogram/procedure/loop– sets of data states:- case analysis (test, switches)– fixpoint iterates:- widening with threshold set
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 95 — ! P. Cousot
Interval widening with threshold set
– The threshold set T is a finite set of numbers (plus+1 and `1),– [a; b]
!T [a0; b0] = [if a0 < a then maxf‘ 2 T j ‘ » a0g
else a;if b0 > b then minfh 2 T j h – b0g
else b] :– Examples (intervals):- sign analysis: T = f`1; 0;+1g;- strict sign analysis: T = f`1;`1; 0;+1;+1g;
– T is a parameter of the analysis.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 96 — ! P. Cousot
Combinations of abstractions
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 97 — ! P. Cousot
Forward/reachability analysis
II
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 98 — ! P. Cousot
Backward/ancestry analysis
IIF
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 99 — ! P. Cousot
Iterated forward/backward analysis
IF
I
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 100 — ! P. Cousot
Example of iterated forward/backward analysisArithmetical mean of two integers x and y:{x>=y}
while (x <> y) do{x>=y+2}
x := x - 1;{x>=y+1}
y := y + 1{x>=y}
od{x=y}
Necessarily x – y for proper termination
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 101 — ! P. Cousot
Example of iterated forward/backward analysisAdding an auxiliary counter k decremented in the loopbody and asserted to be null on loop exit:{x=y+2k,x>=y}
while (x <> y) do{x=y+2k,x>=y+2}
k := k - 1;{x=y+2k+2,x>=y+2}
x := x - 1;{x=y+2k+1,x>=y+1}
y := y + 1{x=y+2k,x>=y}
od{x=y,k=0}
assume (k = 0){x=y,k=0}
Moreover the di"er-ence of x and y mustbe even for proper ter-mination
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 102 — ! P. Cousot
Bibliography
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 103 — ! P. Cousot
Seminal papers– Patrick Cousot & Radhia Cousot. Abstract interpretation: aunified lattice model for static analysis of programs by con-struction or approximation of fixpoints. In 4th Symp. on Prin-ciples of Programming Languages, pages 238—252. ACM Press,1977.– Patrick Cousot & Nicolas Halbwachs. Automatic discovery oflinear restraints among variables of a program. In 5th Symp.on Principles of Programming Languages, pages 84—97. ACMPress, 1978.– Patrick Cousot & Radhia Cousot. Systematic design of pro-gram analysis frameworks. In 6th Symp. on Principles of Pro-gramming Languages pages 269—282. ACM Press, 1979.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 104 — ! P. Cousot
Recent surveys– Patrick Cousot. Interprétation abstraite. Technique et ScienceInformatique, Vol. 19, Nb 1-2-3. Janvier 2000, Hermès, Paris,France. pp. 155-164.– Patrick Cousot. Abstract Interpretation Based Formal Meth-ods and Future Challenges. In Informatics, 10 Years Back —10 Years Ahead, R. Wilhelm (Ed.), LNCS 2000, pp. 138-156,2001.– Patrick Cousot & Radhia Cousot. Abstract InterpretationBased Verification of Embedded Software: Problems and Per-spectives. In Proc. 1st Int. Workshop on Embedded Software,EMSOFT 2001, T.A. Henzinger & C.M. Kirsch (Eds.), LNCS2211, pp. 97–113. Springer, 2001.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 105 — ! P. Cousot
Conclusion
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 106 — ! P. Cousot
Theoretical applications of abstract interpretation
– Static Program Analysis [POPL ’77,78,79] inluding Data-flow Analysis [POPL ’79,00], Set-based Analysis [FPCA ’95],etc– Syntax Analysis [TCS 290(1) 2002]– Hierarchies of Semantics (including Proofs) [POPL ’92, TCS277(1–2) 2002]– Typing [POPL ’97]– Model Checking [POPL ’00]– Program Transformation [POPL ’02]– Software watermarking [POPL ’04]VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 107 — ! P. Cousot
Practical applications of abstractinterpretation
– Program analysis and manipulation: a small rate of falsealarms is acceptable- AiT: worst case execution time – Christian Ferdi-nand
– Program verification: no false alarms is acceptable- TVLA: A system for generating abstract interpreters– Mooly Sagiv- Astrée: verification of absence of run-time errors –Laurent Mauborgne
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 108 — ! P. Cousot
Industrial applications of abstractinterpretation
– Both to Program analysis and verification– Experience with the industrial use of abstract interpre-tation-based static analysis tools – Jean Souyris (Air-bus France)
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 109 — ! P. Cousot
THE END
More references at URL www.di.ens.fr/~cousot.
VMCAI’05 Industrial Day, Paris, France, January 20, 2005 — 110 — ! P. Cousot