Professional Documents
Culture Documents
Finite Models
Finite Models
b c
x = y + z;;
a = f(
f(x);
)
extends relation a
NODES = {{A,, B,, C}}
EDGES = {(A,B)}
includes relation
NODES = {A, B, C} b c
EDGES = {(B,C)}
it lumps together execution states that differ with respect to the
suppressed
pp details but are otherwise identical
return argBuf.toString();
}
{
char last = argStr.charAt(0);
b2 From Sequence
q of basic blocs To
StringBuffer argBuf = new StringBuffer();
False True
Entry b1 b2 b3 b4 b5 b6 b7 jL
jT
|| last
ast != '\n')) b5
True
jX b8 ret
jE {
argBuf.append(ch);
last = ch;
b6
jL b3 b4 jT
}
False jjL b3 b4 b5 jjE
} b7
cIdx++)
jL b3 b4 b5 b6 b7 jL
b8
jL
return argBuf.toString();
}
void foo(int n) {
int[][] myArray
y y = new int[[ n ];
depends( myArray, 2) ;
} C.foo C.bar
void bar(int
( n)) {
int[] myArray = new int[ n ];
depends( myArray, 16) ;
}
C.depends
p
void depends( int[] a, int n ) {
a[n] = 42;
}
}
void foo(int n) {
int[][] myArray
y y = new int[[ n ];
depends( myArray, 2) ;
} C.foo(3) C.bar(17)
void bar(int
( n)) {
int[] myArray = new int[ n ];
depends( myArray, 16) ;
}
C.depends(int(3),a,2) C.depends (int(3),a,2)
void depends( int[] a, int n ) {
a[n] = 42;
}
}
1 context A
B C
2 contexts AB AC
D E
8 contexts …
H I
16 calling contexts …
J
LF CR EOF other
w e/emit
/ it e/emit
/ it d/ it
d/emit w/append
/ d