Static Program Analysis
|
|
- Gerald Rich
- 5 years ago
- Views:
Transcription
1 Static Program Analysis Thomas Noll Software Modeling and Verification Group RWTH Aachen University
2 Online Registration for Seminars and Practical Courses (Praktika) in Summer Term 2017 Who? Students of: Master Courses Bachelor Informatik (ProSeminar!) Where? When?
3 Seminar Verification and Static Analysis of Software (SS 2017) Topics Pointer and shape analysis Advanced model checking techniques Analysis of probabilistic programs... More information Registration between January 13 and 29 via 3 of 18 Static Program Analysis
4 Interprocedural Dataflow Analysis Outline of Lecture 18 Interprocedural Dataflow Analysis Intraprocedural vs. Interprocedural Analysis The MVP Solution 4 of 18 Static Program Analysis
5 Interprocedural Dataflow Analysis Overview So far: only intraprocedural analyses (i.e., without user-defined functions or procedures or just within their bodies) 5 of 18 Static Program Analysis
6 Interprocedural Dataflow Analysis Overview So far: only intraprocedural analyses (i.e., without user-defined functions or procedures or just within their bodies) Now: interprocedural dataflow analysis Complications: correct matching between calls and returns parameter passing (aliasing effects) main(head, tail) reverse(cur, tail) if (cur!= tail) reverse(head, tail) tmp := cur.prev tmp := head cur.prev := cur.next head := tail cur.next := tmp tail := tmp reverse(cur.prev, tail) exit exit if (cur = tail) 5 of 18 Static Program Analysis
7 Interprocedural Dataflow Analysis Overview So far: only intraprocedural analyses (i.e., without user-defined functions or procedures or just within their bodies) Now: interprocedural dataflow analysis Complications: correct matching between calls and returns parameter passing (aliasing effects) Here: simple setting only top-level declarations, no blocks or nested declarations mutual recursion one call-by-value and one call-by-result parameter (extension to multiple and call-by-value-result parameters straightforward) main(head, tail) reverse(head, tail) tmp := head head := tail tail := tmp exit if (cur!= tail) tmp := cur.prev cur.prev := cur.next cur.next := tmp reverse(cur.prev, tail) reverse(cur, tail) exit if (cur = tail) 5 of 18 Static Program Analysis
8 Interprocedural Dataflow Analysis Extending the Syntax Syntactic categories: Category Domain Meta variable Procedure identifiers Pid = {P, Q,...} P Procedure declarations PDec p Commands (statements) Cmd c 6 of 18 Static Program Analysis
9 Interprocedural Dataflow Analysis Extending the Syntax Syntactic categories: Category Domain Meta variable Procedure identifiers Pid = {P, Q,...} P Procedure declarations PDec p Commands (statements) Cmd c Context-free grammar: p ::= proc [P(val x,res y)] l n is c [end]l x ;p ε PDec c ::= [skip] l [x := a] l c 1 ;c 2 if [b] l then c 1 else c 2 end while [b] l do c end [call P(a,x)] l c lr Cmd 6 of 18 Static Program Analysis
10 Interprocedural Dataflow Analysis Extending the Syntax Syntactic categories: Category Domain Meta variable Procedure identifiers Pid = {P, Q,...} P Procedure declarations PDec p Commands (statements) Cmd c Context-free grammar: p ::= proc [P(val x,res y)] l n is c [end]l x ;p ε PDec c ::= [skip] l [x := a] l c 1 ;c 2 if [b] l then c 1 else c 2 end while [b] l do c end [call P(a,x)] l c lr Cmd All labels and procedure names in program p c distinct In proc [P(val x,res y)] l n is c [end]l x, l n / l x refers to the entry / exit of P In [call P(a,x)] l c lr, l c /l r refers to the call of / return from P First parameter call-by-value (input), second call-by-result (output) 6 of 18 Static Program Analysis
11 Interprocedural Dataflow Analysis An Example Example 18.1 (Fibonacci numbers) (with extension by multiple call-by-value parameters) proc [Fib(val x, y, res z)] 1 is if [x < 2] 2 then [z := y + 1] 3 else [call Fib(x-1, y, z)] 4 5; [call Fib(x-2, z, z)] 6 7 end [end] 8 ; [call Fib(5, 0, v)] of 18 Static Program Analysis
12 Interprocedural Dataflow Analysis Procedure Flow Graphs I Definition 18.2 (Procedure flow graphs; extends Def. 2.3 and 2.4) The auxiliary functions init, final, and flow are extended as follows: init(proc [P(val x,res y)] l n is c [end]l x ) := l n final(proc [P(val x,res y)] l n is c [end]l x ) := {l x} flow(proc [P(val x,res y)] l n is c [end]l x ) := {(l n, init(c))} flow(c) {(l, l x ) l final(c)} init([call P(a,x)] l c lr ) := l c final([call P(a,x)] l c lr ) := {l r } flow([call P(a,x)] l c lr ) := {(l c ; l n ), (l x ; l r )} 8 of 18 Static Program Analysis
13 Interprocedural Dataflow Analysis Procedure Flow Graphs I Definition 18.2 (Procedure flow graphs; extends Def. 2.3 and 2.4) The auxiliary functions init, final, and flow are extended as follows: init(proc [P(val x,res y)] l n is c [end]l x ) := l n final(proc [P(val x,res y)] l n is c [end]l x ) := {l x} flow(proc [P(val x,res y)] l n is c [end]l x ) := {(l n, init(c))} flow(c) {(l, l x ) l final(c)} init([call P(a,x)] l c lr ) := l c final([call P(a,x)] l c lr ) := {l r } flow([call P(a,x)] l c lr ) := {(l c ; l n ), (l x ; l r )} Moreover the interprocedural flow of a program p c is defined by iflow := {(l c, l n, l x, l r ) p contains proc [P(val x,res y)] l n is c [end]l x Lab 4 c contains [call P(a,x)] l c lr } and 8 of 18 Static Program Analysis
14 Interprocedural Dataflow Analysis Procedure Flow Graphs II Example 18.3 (Fibonacci numbers) Flow graph of (on the board) proc [Fib(val x, y, res z)] 1 is if [x < 2] 2 then [z := y + 1] 3 else [call Fib(x-1, y, z)] 4 5; [call Fib(x-2, z, z)] 6 7 end [end] 8 ; [call Fib(5, 0, v)] of 18 Static Program Analysis
15 Interprocedural Dataflow Analysis Procedure Flow Graphs II Example 18.3 (Fibonacci numbers) Flow graph of (on the board) proc [Fib(val x, y, res z)] 1 is if [x < 2] 2 then [z := y + 1] 3 else [call Fib(x-1, y, z)] 4 5; [call Fib(x-2, z, z)] 6 7 end [end] 8 ; [call Fib(5, 0, v)] 9 10 Here iflow = {(9, 1, 8, 10), (4, 1, 8, 5), (6, 1, 8, 7)} 9 of 18 Static Program Analysis
16 Intraprocedural vs. Interprocedural Analysis Outline of Lecture 18 Interprocedural Dataflow Analysis Intraprocedural vs. Interprocedural Analysis The MVP Solution 10 of 18 Static Program Analysis
17 Intraprocedural vs. Interprocedural Analysis Naive Formulation I Attempt: directly transfer techniques from intraprocedural analysis = treat (l c ; l n ) like (l c, l n ) and (l x ; l r ) like (l x, l r ) 11 of 18 Static Program Analysis
18 Intraprocedural vs. Interprocedural Analysis Naive Formulation I Attempt: directly transfer techniques from intraprocedural analysis = treat (l c ; l n ) like (l c, l n ) and (l x ; l r ) like (l x, l r ) Given: dataflow system S = (Lab, E, F, (D, ), ι, ϕ) 11 of 18 Static Program Analysis
19 Intraprocedural vs. Interprocedural Analysis Naive Formulation I Attempt: directly transfer techniques from intraprocedural analysis = treat (l c ; l n ) like (l c, l n ) and (l x ; l r ) like (l x, l r ) Given: dataflow system S = (Lab, E, F, (D, ), ι, ϕ) For each procedure call [call P(a,x)] l c lr : transfer functions ϕ lc, ϕ lr : D D (definition later) For each procedure declaration proc [P(val x,res y)] l n is c [end]l x : transfer functions ϕ ln, ϕ lx : D D (definition later) 11 of 18 Static Program Analysis
20 Intraprocedural vs. Interprocedural Analysis Naive Formulation I Attempt: directly transfer techniques from intraprocedural analysis = treat (l c ; l n ) like (l c, l n ) and (l x ; l r ) like (l x, l r ) Given: dataflow system S = (Lab, E, F, (D, ), ι, ϕ) For each procedure call [call P(a,x)] l c lr : transfer functions ϕ lc, ϕ lr : D D (definition later) For each procedure declaration proc [P(val x,res y)] l n is c [end]l x : transfer functions ϕ ln, ϕ lx : D D (definition later) Induces equation system { ι if l E AI l = {ϕl (AI l ) (l, l) F or (l ; l) F} otherwise 11 of 18 Static Program Analysis
21 Intraprocedural vs. Interprocedural Analysis Naive Formulation I Attempt: directly transfer techniques from intraprocedural analysis = treat (l c ; l n ) like (l c, l n ) and (l x ; l r ) like (l x, l r ) Given: dataflow system S = (Lab, E, F, (D, ), ι, ϕ) For each procedure call [call P(a,x)] l c lr : transfer functions ϕ lc, ϕ lr : D D (definition later) For each procedure declaration proc [P(val x,res y)] l n is c [end]l x : transfer functions ϕ ln, ϕ lx : D D (definition later) Induces equation system { ι if l E AI l = {ϕl (AI l ) (l, l) F or (l ; l) F} otherwise Problem: procedure calls (l c ; l n ) and procedure returns (l x ; l r ) treated like goto s = nesting of calls and returns ignored = too many paths considered = analysis information possibly imprecise (but still correct) 11 of 18 Static Program Analysis
22 Intraprocedural vs. Interprocedural Analysis Naive Formulation II Example 18.4 (Fibonacci numbers) proc [Fib(val x, y, res z)] 1 is if [x < 2] 2 then [z := y + 1] 3 else [call Fib(x-1, y, z)] 4 5; [call Fib(x-2, z, z)] 6 7 end [end] 8 ; [call Fib(5, 0, v)] of 18 Static Program Analysis
23 Intraprocedural vs. Interprocedural Analysis Naive Formulation II Example 18.4 (Fibonacci numbers) proc [Fib(val x, y, res z)] 1 is if [x < 2] 2 then [z := y + 1] 3 else [call Fib(x-1, y, z)] 4 5; [call Fib(x-2, z, z)] 6 7 end [end] 8 ; [call Fib(5, 0, v)] 9 10 Valid path: [9, 1, 2, 3, 8, 10] 12 of 18 Static Program Analysis
24 Intraprocedural vs. Interprocedural Analysis Naive Formulation II Example 18.4 (Fibonacci numbers) proc [Fib(val x, y, res z)] 1 is if [x < 2] 2 then [z := y + 1] 3 else [call Fib(x-1, y, z)] 4 5; [call Fib(x-2, z, z)] 6 7 end [end] 8 ; [call Fib(5, 0, v)] 9 10 Valid path: [9, 1, 2, 3, 8, 10] Invalid path: [9, 1, 2, 4, 1, 2, 3, 8, 10] 12 of 18 Static Program Analysis
25 Intraprocedural vs. Interprocedural Analysis Naive Formulation III Example 18.5 (Impreciseness of constant propagation analysis) proc [P(val x, res y)] 1 is [y := x] 2 [end] 3 ; if [y = 0] 4 then [call P(1, y)] 5 6; [y := y - 1] 7 else [call P(2, y)] 8 9; [y := y - 2] 10 end; [skip] of 18 Static Program Analysis
26 Intraprocedural vs. Interprocedural Analysis Naive Formulation III Example 18.5 (Impreciseness of constant propagation analysis) proc [P(val x, res y)] 1 is [y := x] 2 [end] 3 ; if [y = 0] 4 then [call P(1, y)] 5 6; [y := y - 1] 7 else [call P(2, y)] 8 9; [y := y - 2] 10 end; [skip] 11 Two valid and two invalid paths: Valid: [4, 5, 1, 2, 3, 6, 7, 11] = y = 0 at label of 18 Static Program Analysis
27 Intraprocedural vs. Interprocedural Analysis Naive Formulation III Example 18.5 (Impreciseness of constant propagation analysis) proc [P(val x, res y)] 1 is [y := x] 2 [end] 3 ; if [y = 0] 4 then [call P(1, y)] 5 6; [y := y - 1] 7 else [call P(2, y)] 8 9; [y := y - 2] 10 end; [skip] 11 Two valid and two invalid paths: Valid: [4, 5, 1, 2, 3, 6, 7, 11] = y = 0 at label 11 Valid: [4, 8, 1, 2, 3, 9, 10, 11] = y = 0 at label of 18 Static Program Analysis
28 Intraprocedural vs. Interprocedural Analysis Naive Formulation III Example 18.5 (Impreciseness of constant propagation analysis) proc [P(val x, res y)] 1 is [y := x] 2 [end] 3 ; if [y = 0] 4 then [call P(1, y)] 5 6; [y := y - 1] 7 else [call P(2, y)] 8 9; [y := y - 2] 10 end; [skip] 11 Two valid and two invalid paths: Valid: [4, 5, 1, 2, 3, 6, 7, 11] = y = 0 at label 11 Valid: [4, 8, 1, 2, 3, 9, 10, 11] = y = 0 at label 11 Invalid: [4, 5, 1, 2, 3, 9, 10, 11] = y = 1 at label of 18 Static Program Analysis
29 Intraprocedural vs. Interprocedural Analysis Naive Formulation III Example 18.5 (Impreciseness of constant propagation analysis) proc [P(val x, res y)] 1 is [y := x] 2 [end] 3 ; if [y = 0] 4 then [call P(1, y)] 5 6; [y := y - 1] 7 else [call P(2, y)] 8 9; [y := y - 2] 10 end; [skip] 11 Two valid and two invalid paths: Valid: [4, 5, 1, 2, 3, 6, 7, 11] = y = 0 at label 11 Valid: [4, 8, 1, 2, 3, 9, 10, 11] = y = 0 at label 11 Invalid: [4, 5, 1, 2, 3, 9, 10, 11] = y = 1 at label 11 Invalid: [4, 8, 1, 2, 3, 6, 7, 11] = y = 1 at label of 18 Static Program Analysis
30 Intraprocedural vs. Interprocedural Analysis Naive Formulation III Example 18.5 (Impreciseness of constant propagation analysis) proc [P(val x, res y)] 1 is [y := x] 2 [end] 3 ; if [y = 0] 4 then [call P(1, y)] 5 6; [y := y - 1] 7 else [call P(2, y)] 8 9; [y := y - 2] 10 end; [skip] 11 Two valid and two invalid paths: Valid: [4, 5, 1, 2, 3, 6, 7, 11] = y = 0 at label 11 Valid: [4, 8, 1, 2, 3, 9, 10, 11] = y = 0 at label 11 Invalid: [4, 5, 1, 2, 3, 9, 10, 11] = y = 1 at label 11 Invalid: [4, 8, 1, 2, 3, 6, 7, 11] = y = 1 at label 11 = actually always y = 0 at 11, but naive method yields y = 13 of 18 Static Program Analysis
31 The MVP Solution Outline of Lecture 18 Interprocedural Dataflow Analysis Intraprocedural vs. Interprocedural Analysis The MVP Solution 14 of 18 Static Program Analysis
32 The MVP Solution Valid Paths I Consider only paths with correct nesting of procedure calls and returns Will yield MVP solution (Meet over all Valid Paths) Definition 18.6 (Valid path fragments) Given a dataflow system S = (Lab, E, F, (D, ), ι, ϕ) and l 1, l 2 Lab, the set of valid paths from l 1 to l 2 is generated by the nonterminal symbol P[l 1, l 2 ] according to the following context-free grammar: P[l 1, l 2 ] l 1 whenever l 1 = l 2 P[l 1, l 3 ] l 1, P[l 2, l 3 ] whenever (l 1, l 2 ) F P[l c, l] l c, P[l n, l x ], P[l r, l] whenever (l c, l n, l x, l r ) iflow 15 of 18 Static Program Analysis
33 The MVP Solution Valid Paths II Example 18.7 (Fibonacci numbers; cf. Example 18.4) proc [Fib(val x, y, res z)] 1 is if [x < 2] 2 then [z := y + 1] 3 else [call Fib(x-1, y, z)] 4 5; [call Fib(x-2, z, z)] 6 7 end [end] 8 ; [call Fib(5, 0, v)] of 18 Static Program Analysis
34 The MVP Solution Valid Paths II Example 18.7 (Fibonacci numbers; cf. Example 18.4) proc [Fib(val x, y, res z)] 1 is if [x < 2] 2 then [z := y + 1] 3 else [call Fib(x-1, y, z)] 4 5; [call Fib(x-2, z, z)] 6 7 end [end] 8 ; [call Fib(5, 0, v)] 9 10 Reminder: P[l 1, l 2 ] l 1 for l 1 = l 2 P[l 1, l 3 ] l 1, P[l 2, l 3 ] for (l 1, l 2 ) F P[l c, l] l c, P[l n, l x ], P[l r, l] for (l c, l n, l x, l r ) iflow 16 of 18 Static Program Analysis
35 The MVP Solution Valid Paths II Example 18.7 (Fibonacci numbers; cf. Example 18.4) proc [Fib(val x, y, res z)] 1 is if [x < 2] 2 then [z := y + 1] 3 else [call Fib(x-1, y, z)] 4 5; [call Fib(x-2, z, z)] 6 7 end [end] 8 ; [call Fib(5, 0, v)] 9 10 Reminder: P[l 1, l 2 ] l 1 for l 1 = l 2 P[l 1, l 3 ] l 1, P[l 2, l 3 ] for (l 1, l 2 ) F P[l c, l] l c, P[l n, l x ], P[l r, l] for (l c, l n, l x, l r ) iflow Valid paths from 9 to 10: P[9, 10] 9, P[1, 8], P[10, 10] P[1, 8] 1, P[2, 8] P[2, 8] 2, P[3, 8] P[2, 8] 2, P[4, 8] P[3, 8] 3, P[8, 8] P[4, 8] 4, P[1, 8], P[5, 8] P[5, 8] 5, P[6, 8] P[6, 8] 6, P[1, 8], P[7, 8] P[7, 8] 7, P[8, 8] P[8, 8] 8 P[10, 10] of 18 Static Program Analysis
36 The MVP Solution Valid Paths II Example 18.7 (Fibonacci numbers; cf. Example 18.4) proc [Fib(val x, y, res z)] 1 is if [x < 2] 2 then [z := y + 1] 3 else [call Fib(x-1, y, z)] 4 5; [call Fib(x-2, z, z)] 6 7 end [end] 8 ; [call Fib(5, 0, v)] 9 10 Reminder: P[l 1, l 2 ] l 1 for l 1 = l 2 P[l 1, l 3 ] l 1, P[l 2, l 3 ] for (l 1, l 2 ) F P[l c, l] l c, P[l n, l x ], P[l r, l] for (l c, l n, l x, l r ) iflow Valid paths from 9 to 10: P[9, 10] 9, P[1, 8], P[10, 10] P[1, 8] 1, P[2, 8] P[2, 8] 2, P[3, 8] P[2, 8] 2, P[4, 8] P[3, 8] 3, P[8, 8] P[4, 8] 4, P[1, 8], P[5, 8] P[5, 8] 5, P[6, 8] P[6, 8] 6, P[1, 8], P[7, 8] P[7, 8] 7, P[8, 8] P[8, 8] 8 P[10, 10] 10 Thus [9, 1, 2, 3, 8, 10] L(P[9, 10]), [9, 1, 2, 4, 1, 2, 3, 8, 10] / L(P[9, 10]) 16 of 18 Static Program Analysis
37 The MVP Solution The MVP Solution I Definition 18.8 (Complete valid paths) Let S = (Lab, E, F, (D, ), ι, ϕ) be a dataflow system. For every l Lab, the set of valid paths up to l is given by VPath(l) := {[l 1,..., l k 1 ] k 1, l 1 E, l k = l, [l 1,..., l k ] valid path from l 1 to l k }. 17 of 18 Static Program Analysis
38 The MVP Solution The MVP Solution I Definition 18.8 (Complete valid paths) Let S = (Lab, E, F, (D, ), ι, ϕ) be a dataflow system. For every l Lab, the set of valid paths up to l is given by VPath(l) := {[l 1,..., l k 1 ] k 1, l 1 E, l k = l, [l 1,..., l k ] valid path from l 1 to l k }. For π = [l 1,..., l k 1 ] VPath(l), we define the transfer function ϕ π : D D by (so that ϕ [] = id D ). ϕ π := ϕ lk 1... ϕ l1 id D 17 of 18 Static Program Analysis
39 The MVP Solution The MVP Solution II Definition 18.9 (MVP solution) Let S = (Lab, E, F, (D, ), ι, ϕ) be a dataflow system where Lab = {l 1,..., l n }. The MVP solution for S is determined by mvp(s) := (mvp(l 1 ),..., mvp(l n )) D n where, for every l Lab, mvp(l) := {ϕ π (ι) π VPath(l)}. 18 of 18 Static Program Analysis
40 The MVP Solution The MVP Solution II Definition 18.9 (MVP solution) Let S = (Lab, E, F, (D, ), ι, ϕ) be a dataflow system where Lab = {l 1,..., l n }. The MVP solution for S is determined by mvp(s) := (mvp(l 1 ),..., mvp(l n )) D n where, for every l Lab, mvp(l) := {ϕ π (ι) π VPath(l)}. Corollary mvp(s) mop(s) 2. The MVP solution is undecidable. 18 of 18 Static Program Analysis
41 The MVP Solution The MVP Solution II Definition 18.9 (MVP solution) Let S = (Lab, E, F, (D, ), ι, ϕ) be a dataflow system where Lab = {l 1,..., l n }. The MVP solution for S is determined by mvp(s) := (mvp(l 1 ),..., mvp(l n )) D n where, for every l Lab, mvp(l) := {ϕ π (ι) π VPath(l)}. Corollary mvp(s) mop(s) 2. The MVP solution is undecidable. Proof. 1. since VPath(l) Path(l) for every l Lab 2. as mvp(s) = mop(s) in intraprocedural case and MOP solution undecidable (Thm. 7.1) 18 of 18 Static Program Analysis
Static Program Analysis
Static Program Analysis Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-18/spa/ Recap: Interprocedural Dataflow Analysis Outline of
More informationInter-procedural Data Flow Analysis
Flow insensitive analysis Context insensitive analysis Context sensitive analysis Inter-procedural Data Flow Analysis Hanne Riis Nielson and Flemming Nielson email: {riis,nielson}@imm.dtu.dk Informatics
More informationStatic Program Analysis
Static Program Analysis Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ws-1617/spa/ Software Architektur Praxis-Workshop Bringen Sie Informatik
More informationDFA of non-distributive properties
DFA of non-distributive properties The general pattern of Dataflow Analysis GA (p)= i if p E { GA (q) q F } otherwise GA (p)= f p ( GA (p) ) where : E is the set of initial/final points of the control-flow
More informationStatic Program Analysis
Static Program Analysis Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ws-1617/spa/ Software Architektur Praxis-Workshop Bringen Sie Informatik
More informationPrinciples of Program Analysis: Data Flow Analysis
Principles of Program Analysis: Data Flow Analysis Transparencies based on Chapter 2 of the book: Flemming Nielson, Hanne Riis Nielson and Chris Hankin: Principles of Program Analysis. Springer Verlag
More informationSemantics and Verification of Software
Semantics and Verification of Software Thomas Noll Software Modeling and Verification Group RWTH Aachen University http://moves.rwth-aachen.de/teaching/ss-15/sv-sw/ The Denotational Approach Denotational
More informationStatic Program Analysis
Static Program Analysis Lecture 16: Abstract Interpretation VI (Counterexample-Guided Abstraction Refinement) Thomas Noll Lehrstuhl für Informatik 2 (Software Modeling and Verification) noll@cs.rwth-aachen.de
More informationSemantics and Verification of Software
Semantics and Verification of Software Thomas Noll Software Modeling and Verification Group RWTH Aachen University http://moves.rwth-aachen.de/teaching/ws-1718/sv-sw/ Recap: The Denotational Approach Semantics
More informationStatic Program Analysis
Static Program Analysis Lecture 13: Abstract Interpretation III (Abstract Interpretation of WHILE Programs) Thomas Noll Lehrstuhl für Informatik 2 (Software Modeling and Verification) noll@cs.rwth-aachen.de
More informationAdventures in Dataflow Analysis
Adventures in Dataflow Analysis CSE 401 Section 9-ish Jack Eggleston, Aaron Johnston, & Nate Yazdani Announcements - Code Generation due Announcements - Code Generation due - Compiler Additions due next
More informationFoundations of Informatics: a Bridging Course
Foundations of Informatics: a Bridging Course Week 3: Formal Languages and Semantics Thomas Noll Lehrstuhl für Informatik 2 RWTH Aachen University noll@cs.rwth-aachen.de http://www.b-it-center.de/wob/en/view/class211_id948.html
More informationTwo Approaches to Interprocedural Data Flow Analysis
Two Approaches to Interprocedural Data Flow Analysis Micha Sharir Amir Pnueli Part one: The Functional Approach 12.06.2010 Klaas Boesche Intraprocedural analysis procedure main read a, b procedure p if
More informationCompiler Construction
Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-16/cc/ Recap: LR(0) Grammars LR(0) Grammars The case k = 0 is
More information1 Introduction. 2 Recap The Typed λ-calculus λ. 3 Simple Data Structures
CS 6110 S18 Lecture 21 Products, Sums, and Other Datatypes 1 Introduction In this lecture, we add constructs to the typed λ-calculus that allow working with more complicated data structures, such as pairs,
More informationCSC 7101: Programming Language Structures 1. Axiomatic Semantics. Stansifer Ch 2.4, Ch. 9 Winskel Ch.6 Slonneger and Kurtz Ch. 11.
Axiomatic Semantics Stansifer Ch 2.4, Ch. 9 Winskel Ch.6 Slonneger and Kurtz Ch. 11 1 Overview We ll develop proof rules, such as: { I b } S { I } { I } while b do S end { I b } That allow us to verify
More informationFlow grammars a flow analysis methodology
Flow grammars a flow analysis methodology James S. Uhl and R. Nigel Horspool Dept. of Computer Science, University of Victoria P.O. Box 3055, Victoria, BC, Canada V8W 3P6 E-mail: juhl@csr.uvic.ca, nigelh@csr.uvic.ca
More informationComputational Models Lecture 8 1
Computational Models Lecture 8 1 Handout Mode Ronitt Rubinfeld and Iftach Haitner. Tel Aviv University. May 11/13, 2015 1 Based on frames by Benny Chor, Tel Aviv University, modifying frames by Maurice
More informationPrinciples of Program Analysis: Control Flow Analysis
Principles of Program Analysis: Control Flow Analysis Transparencies based on Chapter 3 of the book: Flemming Nielson, Hanne Riis Nielson and Chris Hankin: Principles of Program Analysis. Springer Verlag
More informationAxiomatic Semantics. Stansifer Ch 2.4, Ch. 9 Winskel Ch.6 Slonneger and Kurtz Ch. 11 CSE
Axiomatic Semantics Stansifer Ch 2.4, Ch. 9 Winskel Ch.6 Slonneger and Kurtz Ch. 11 CSE 6341 1 Outline Introduction What are axiomatic semantics? First-order logic & assertions about states Results (triples)
More informationCS156: The Calculus of Computation
CS156: The Calculus of Computation Zohar Manna Winter 2010 It is reasonable to hope that the relationship between computation and mathematical logic will be as fruitful in the next century as that between
More informationTheory of Computer Science
Theory of Computer Science D1. Turing-Computability Malte Helmert University of Basel April 18, 2016 Overview: Course contents of this course: logic How can knowledge be represented? How can reasoning
More informationComputation of Alias Sets from Shape Graphs for Comparison of Shape Analysis Precision
for Comparison of Shape Analysis Precision Viktor Pavlu, 1 Markus Schordan, 2 Andreas Krall 1 1 Vienna University of Technology 2 University of Applied Sciences Technikum Wien SCAM 2011, Williamsburg September
More informationLecture 11 Sections 4.5, 4.7. Wed, Feb 18, 2009
The s s The s Lecture 11 Sections 4.5, 4.7 Hampden-Sydney College Wed, Feb 18, 2009 Outline The s s 1 s 2 3 4 5 6 The LR(0) Parsing s The s s There are two tables that we will construct. The action table
More informationEXAM. CS331 Compiler Design Spring Please read all instructions, including these, carefully
EXAM Please read all instructions, including these, carefully There are 7 questions on the exam, with multiple parts. You have 3 hours to work on the exam. The exam is open book, open notes. Please write
More informationComputational Models Lecture 8 1
Computational Models Lecture 8 1 Handout Mode Ronitt Rubinfeld and Iftach Haitner. Tel Aviv University. April 18/ May 2, 2016 1 Based on frames by Benny Chor, Tel Aviv University, modifying frames by Maurice
More informationEDA045F: Program Analysis LECTURE 10: TYPES 1. Christoph Reichenbach
EDA045F: Program Analysis LECTURE 10: TYPES 1 Christoph Reichenbach In the last lecture... Performance Counters Challenges in Dynamic Performance Analysis Taint Analysis Binary Instrumentation 2 / 44 Types
More informationComputational Models Lecture 8 1
Computational Models Lecture 8 1 Handout Mode Nachum Dershowitz & Yishay Mansour. Tel Aviv University. May 17 22, 2017 1 Based on frames by Benny Chor, Tel Aviv University, modifying frames by Maurice
More informationCOSE312: Compilers. Lecture 17 Intermediate Representation (2)
COSE312: Compilers Lecture 17 Intermediate Representation (2) Hakjoo Oh 2017 Spring Hakjoo Oh COSE312 2017 Spring, Lecture 17 May 31, 2017 1 / 19 Common Intermediate Representations Three-address code
More informationCS156: The Calculus of Computation Zohar Manna Autumn 2008
Page 3 of 52 Page 4 of 52 CS156: The Calculus of Computation Zohar Manna Autumn 2008 Lecturer: Zohar Manna (manna@cs.stanford.edu) Office Hours: MW 12:30-1:00 at Gates 481 TAs: Boyu Wang (wangboyu@stanford.edu)
More informationPrecise Interprocedural Analysis using Random Interpretation
Precise Interprocedural Analysis using Random Interpretation Sumit Gulwani gulwani@cs.berkeley.edu George C. Necula necula@cs.berkeley.edu Department of Electrical Engineering and Computer Science University
More informationLecture VII Part 2: Syntactic Analysis Bottom-up Parsing: LR Parsing. Prof. Bodik CS Berkley University 1
Lecture VII Part 2: Syntactic Analysis Bottom-up Parsing: LR Parsing. Prof. Bodik CS 164 -- Berkley University 1 Bottom-Up Parsing Bottom-up parsing is more general than topdown parsing And just as efficient
More informationDataflow Analysis. Chapter 9, Section 9.2, 9.3, 9.4
Dataflow Analysis Chapter 9, Section 9.2, 9.3, 9.4 2 Dataflow Analysis Dataflow analysis is a sub area of static program analysis Used in the compiler back end for optimizations of three address code and
More informationContext Free Grammars
Automata and Formal Languages Context Free Grammars Sipser pages 101-111 Lecture 11 Tim Sheard 1 Formal Languages 1. Context free languages provide a convenient notation for recursive description of languages.
More informationProbabilistic Model Checking and [Program] Analysis (CO469)
Probabilistic Model Checking and [Program] Analysis (CO469) Program Analysis Herbert Wiklicky herbert@doc.ic.ac.uk Spring 208 / 64 Overview Topics we will cover in this part will include:. Language WHILE
More informationCOMPUTER SCIENCE TRIPOS
CST.2014.6.1 COMPUTER SCIENCE TRIPOS Part IB Thursday 5 June 2014 1.30 to 4.30 pm COMPUTER SCIENCE Paper 6 Answer five questions. Submit the answers in five separate bundles, each with its own cover sheet.
More informationProgramming Language Concepts, CS2104 Lecture 3
Programming Language Concepts, CS2104 Lecture 3 Statements, Kernel Language, Abstract Machine 31 Aug 2007 CS2104, Lecture 3 1 Reminder of last lecture Programming language definition: syntax, semantics
More informationTheory of Computer Science. Theory of Computer Science. D8.1 Other Halting Problem Variants. D8.2 Rice s Theorem
Theory of Computer Science May 15, 2017 D8. Rice s Theorem and Other Undecidable Problems Theory of Computer Science D8. Rice s Theorem and Other Undecidable Problems Malte Helmert University of Basel
More informationLecture Notes on Inductive Definitions
Lecture Notes on Inductive Definitions 15-312: Foundations of Programming Languages Frank Pfenning Lecture 2 August 28, 2003 These supplementary notes review the notion of an inductive definition and give
More informationIntra-procedural Data Flow Analysis Backwards analyses
Live variables Dead code elimination Very Busy Expressions Code hoisting Bitvector frameworks Monotone frameworks Intra-procedural Data Flow Analysis Backwards analyses Hanne Riis Nielson and Flemming
More informationData Flow Analysis. Lecture 6 ECS 240. ECS 240 Data Flow Analysis 1
Data Flow Analysis Lecture 6 ECS 240 ECS 240 Data Flow Analysis 1 The Plan Introduce a few example analyses Generalize to see the underlying theory Discuss some more advanced issues ECS 240 Data Flow Analysis
More informationNotes 6 : First and second moment methods
Notes 6 : First and second moment methods Math 733-734: Theory of Probability Lecturer: Sebastien Roch References: [Roc, Sections 2.1-2.3]. Recall: THM 6.1 (Markov s inequality) Let X be a non-negative
More informationProgram Slicing. Author: Mark Weiser Published in TSE, Presented by Peeratham (Karn) Techapalokul 10/13/2015
Program Slicing Author: Mark Weiser Published in TSE, 1984 Presented by Peeratham (Karn) Techapalokul 1/13/215 About Mark Weiser a chief scientist at Xerox PARC Widely considered to be the father of ubiquitous
More informationSoftware Verification
Software Verification Grégoire Sutre LaBRI, University of Bordeaux, CNRS, France Summer School on Verification Technology, Systems & Applications September 2008 Grégoire Sutre Software Verification VTSA
More informationCOMP 515: Advanced Compilation for Vector and Parallel Processors. Vivek Sarkar Department of Computer Science Rice University
COMP 515: Advanced Compilation for Vector and Parallel Processors Vivek Sarkar Department of Computer Science Rice University vsarkar@rice.edu COMP 515 Lecture 3 13 January 2009 Acknowledgments Slides
More informationSyntax Analysis Part I
1 Syntax Analysis Part I Chapter 4 COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University, 2007-2013 2 Position of a Parser in the Compiler Model Source Program Lexical Analyzer
More informationHarvard CS 121 and CSCI E-207 Lecture 12: General Context-Free Recognition
Harvard CS 121 and CSCI E-207 Lecture 12: General Context-Free Recognition Salil Vadhan October 11, 2012 Reading: Sipser, Section 2.3 and Section 2.1 (material on Chomsky Normal Form). Pumping Lemma for
More informationExtended Weighted Pushdown Systems
Extended Weighted Pushdown Systems Akash Lal, Thomas Reps, and Gogul Balakrishnan University of Wisconsin, Madison, Wisconsin 53706 {akash, reps, bgogul}@cs.wisc.edu Abstract. Recent work on weighted-pushdown
More informationSpring 2015 Program Analysis and Verification. Lecture 4: Axiomatic Semantics I. Roman Manevich Ben-Gurion University
Spring 2015 Program Analysis and Verification Lecture 4: Axiomatic Semantics I Roman Manevich Ben-Gurion University Agenda Basic concepts of correctness Axiomatic semantics (pages 175-183) Hoare Logic
More informationCMSC 631 Program Analysis and Understanding. Spring Data Flow Analysis
CMSC 631 Program Analysis and Understanding Spring 2013 Data Flow Analysis Data Flow Analysis A framework for proving facts about programs Reasons about lots of little facts Little or no interaction between
More informationSyntax Analysis Part III
Syntax Analysis Part III Chapter 4: Top-Down Parsing Slides adapted from : Robert van Engelen, Florida State University Eliminating Ambiguity stmt if expr then stmt if expr then stmt else stmt other The
More informationProbabilistic Program Analysis
Probabilistic Program Analysis Data Flow Analysis and Regression Alessandra Di Pierro University of Verona, Italy alessandra.dipierro@univr.it Herbert Wiklicky Imperial College London, UK herbert@doc.ic.ac.uk
More informationCSC 4181Compiler Construction. Context-Free Grammars Using grammars in parsers. Parsing Process. Context-Free Grammar
CSC 4181Compiler Construction Context-ree Grammars Using grammars in parsers CG 1 Parsing Process Call the scanner to get tokens Build a parse tree from the stream of tokens A parse tree shows the syntactic
More informationModel Checking & Program Analysis
Model Checking & Program Analysis Markus Müller-Olm Dortmund University Overview Introduction Model Checking Flow Analysis Some Links between MC and FA Conclusion Apology for not giving proper credit to
More informationDataflow Analysis - 2. Monotone Dataflow Frameworks
Dataflow Analysis - 2 Monotone dataflow frameworks Definition Convergence Safety Relation of MOP to MFP Constant propagation Categorization of dataflow problems DataflowAnalysis 2, Sp06 BGRyder 1 Monotone
More informationDisjunctive relational abstract interpretation for interprocedural program analysis
Disjunctive relational abstract interpretation for interprocedural program analysis Nicolas Halbwachs, joint work with Rémy Boutonnet Verimag/CNRS, and Grenoble-Alpes University Grenoble, France R. Boutonnet,
More informationCSE302: Compiler Design
CSE302: Compiler Design Instructor: Dr. Liang Cheng Department of Computer Science and Engineering P.C. Rossin College of Engineering & Applied Science Lehigh University February 27, 2007 Outline Recap
More informationModular Lattices for Compositional Interprocedural Analysis. by Ghila Castelnuovo
Tel Aviv University Raymond and Beverly Sackler Faculty of Exact Sciences School of Computer Science Modular Lattices for Compositional Interprocedural Analysis by Ghila Castelnuovo under the supervision
More informationRoy L. Crole. Operational Semantics Abstract Machines and Correctness. University of Leicester, UK
Midlands Graduate School, University of Birmingham, April 2008 1 Operational Semantics Abstract Machines and Correctness Roy L. Crole University of Leicester, UK Midlands Graduate School, University of
More informationProgram Analysis Probably Counts
Probably Counts 1 c.hankin@imperial.ac.uk joint work with Alessandra Di Pierro 2 and Herbert Wiklicky 1 1 Department of Computing, 2 Dipartimento di Informatica, Università di Verona Computer Journal Lecture,
More informationMA/CSSE 474 Theory of Computation
MA/CSSE 474 Theory of Computation CFL Hierarchy CFL Decision Problems Your Questions? Previous class days' material Reading Assignments HW 12 or 13 problems Anything else I have included some slides online
More informationCA Compiler Construction
CA4003 - Compiler Construction Bottom Up Parsing David Sinclair Bottom Up Parsing LL(1) parsers have enjoyed a bit of a revival thanks to JavaCC. LL(k) parsers must predict which production rule to use
More informationSpring 2016 Program Analysis and Verification. Lecture 3: Axiomatic Semantics I. Roman Manevich Ben-Gurion University
Spring 2016 Program Analysis and Verification Lecture 3: Axiomatic Semantics I Roman Manevich Ben-Gurion University Warm-up exercises 1. Define program state: 2. Define structural semantics configurations:
More informationFinite Automata and Formal Languages TMV026/DIT321 LP4 2012
Finite Automata and Formal Languages TMV26/DIT32 LP4 22 Lecture 7 Ana Bove March 27th 22 Overview of today s lecture: Regular Expressions From FA to RE Regular Expressions Regular expressions (RE) are
More informationCOMP 3161/9161 Week 2
Concepts of Programming Languages Judgements, Inference Rules & Proofs Lecturer: Gabriele Keller Tutor: Liam O Connor University of New South Wales School of Computer Sciences & Engineering Sydney, Australia
More informationFinite Automata and Formal Languages
Finite Automata and Formal Languages TMV26/DIT32 LP4 2 Lecture 6 April 5th 2 Regular expressions (RE) are an algebraic way to denote languages. Given a RE R, it defines the language L(R). Actually, they
More informationAlgebra II Summer Packet. Summer Name:
Algebra II Summer Packet Summer 2017 Name: NAME ALGEBRA II & TRIGONOMETRY SUMMER REVIEW PACKET To maintain a high quality program, students entering Algebra II are expected to remember the basics of the
More informationFinite Presentations of Pregroups and the Identity Problem
6 Finite Presentations of Pregroups and the Identity Problem Alexa H. Mater and James D. Fix Abstract We consider finitely generated pregroups, and describe how an appropriately defined rewrite relation
More informationSyntactic Analysis. Top-Down Parsing
Syntactic Analysis Top-Down Parsing Copyright 2015, Pedro C. Diniz, all rights reserved. Students enrolled in Compilers class at University of Southern California (USC) have explicit permission to make
More informationSFM-11:CONNECT Summer School, Bertinoro, June 2011
SFM-:CONNECT Summer School, Bertinoro, June 20 EU-FP7: CONNECT LSCITS/PSS VERIWARE Part 3 Markov decision processes Overview Lectures and 2: Introduction 2 Discrete-time Markov chains 3 Markov decision
More informationSyntax Analysis Part I
1 Syntax Analysis Part I Chapter 4 COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University, 2007-2013 2 Position of a Parser in the Compiler Model Source Program Lexical Analyzer
More informationVerification of Recursive Programs. Andreas Podelski February 8, 2012
Verification of Recursive Programs Andreas Podelski February 8, 2012 1 m(x) = x 10 if x > 100 m(m(x + 11)) if x 100 2 procedure m(x) returns (res) `0: if x>100 `1: res:=x-10 else `2: x m := x+11 `3: res
More informationRecent developments in concurrent program logics
Recent developments in concurrent program logics Viktor Vafeiadis University of Cambridge PSPL 2010 Why program logic? Reasoning framework Capture common reasoning principles Reduce accidental proof complexity
More informationTermination Graphs for Java Bytecode. Marc Brockschmidt, Carsten Otto, Christian von Essen, Jürgen Giesl
Aachen Department of Computer Science Technical Report Termination Graphs for Java Bytecode Marc Brockschmidt, Carsten Otto, Christian von Essen, Jürgen Giesl ISSN 0935 3232 Aachener Informatik-Berichte
More informationAdministrivia. Test I during class on 10 March. Bottom-Up Parsing. Lecture An Introductory Example
Administrivia Test I during class on 10 March. Bottom-Up Parsing Lecture 11-12 From slides by G. Necula & R. Bodik) 2/20/08 Prof. Hilfinger CS14 Lecture 11 1 2/20/08 Prof. Hilfinger CS14 Lecture 11 2 Bottom-Up
More informationSyntax Analysis Part I. Position of a Parser in the Compiler Model. The Parser. Chapter 4
1 Syntax Analysis Part I Chapter 4 COP5621 Compiler Construction Copyright Robert van ngelen, Flora State University, 2007 Position of a Parser in the Compiler Model 2 Source Program Lexical Analyzer Lexical
More informationLanguages. Languages. An Example Grammar. Grammars. Suppose we have an alphabet V. Then we can write:
Languages A language is a set (usually infinite) of strings, also known as sentences Each string consists of a sequence of symbols taken from some alphabet An alphabet, V, is a finite set of symbols, e.g.
More informationAP Physics C Syllabus
Course Overview AP Physics C Syllabus AP Physics C will meet for 90 minutes on block scheduling and for 45 minutes on regular scheduling. Class activities will include lecture, demonstration, problem solving
More informationCSC D70: Compiler Optimization Dataflow-2 and Loops
CSC D70: Compiler Optimization Dataflow-2 and Loops Prof. Gennady Pekhimenko University of Toronto Winter 2018 The content of this lecture is adapted from the lectures of Todd Mowry and Phillip Gibbons
More informationAutomatic Verification of Parameterized Data Structures
Automatic Verification of Parameterized Data Structures Jyotirmoy V. Deshmukh, E. Allen Emerson and Prateek Gupta The University of Texas at Austin The University of Texas at Austin 1 Outline Motivation
More informationThe Expressivity of Universal Timed CCP: Undecidability of Monadic FLTL and Closure Operators for Security
The Expressivity of Universal Timed CCP: Undecidability of Monadic FLTL and Closure Operators for Security Carlos Olarte and Frank D. Valencia INRIA /CNRS and LIX, Ecole Polytechnique Motivation Concurrent
More informationSemantics and Verification
Semantics and Verification Lecture 2 informal introduction to CCS syntax of CCS semantics of CCS 1 / 12 Sequential Fragment Parallelism and Renaming CCS Basics (Sequential Fragment) Nil (or 0) process
More informationNotes on Complexity Theory Last updated: December, Lecture 27
Notes on Complexity Theory Last updated: December, 2011 Jonathan Katz Lecture 27 1 Space-Bounded Derandomization We now discuss derandomization of space-bounded algorithms. Here non-trivial results can
More informationChapter 5. Finite Automata
Chapter 5 Finite Automata 5.1 Finite State Automata Capable of recognizing numerous symbol patterns, the class of regular languages Suitable for pattern-recognition type applications, such as the lexical
More informationEven More on Dynamic Programming
Algorithms & Models of Computation CS/ECE 374, Fall 2017 Even More on Dynamic Programming Lecture 15 Thursday, October 19, 2017 Sariel Har-Peled (UIUC) CS374 1 Fall 2017 1 / 26 Part I Longest Common Subsequence
More informationTopic-I-C Dataflow Analysis
Topic-I-C Dataflow Analysis 2012/3/2 \course\cpeg421-08s\topic4-a.ppt 1 Global Dataflow Analysis Motivation We need to know variable def and use information between basic blocks for: constant folding dead-code
More informationNotes for Lecture 3... x 4
Stanford University CS254: Computational Complexity Notes 3 Luca Trevisan January 18, 2012 Notes for Lecture 3 In this lecture we introduce the computational model of boolean circuits and prove that polynomial
More informationLecture 3: Decidability
Lecture 3: Decidability January 11, 2011 Lecture 3, Slide 1 ECS 235B, Foundations of Information and Computer Security January 11, 2011 1 Review 2 Decidability of security Mono-operational command case
More informationAn example of a decidable language that is not a CFL Implementation-level description of a TM State diagram of TM
Turing Machines Review An example of a decidable language that is not a CFL Implementation-level description of a TM State diagram of TM Varieties of TMs Multi-Tape TMs Nondeterministic TMs String Enumerators
More informationWhy Can t You Behave? Non-Termination Analysis of Direct Recursive Rules with Constraints
Why Can t You Behave? Non-Termination Analysis of Direct Recursive Rules with Constraints Thom Frühwirth Ulm University, Germany thom.fruehwirth@uni-ulm.de Abstract. This paper is concerned with rule-based
More informationStudent Session Topic: Average and Instantaneous Rates of Change
Student Session Topic: Average and Instantaneous Rates of Change The concepts of average rates of change and instantaneous rates of change are the building blocks of differential calculus. The AP exams
More informationCompositional May-Must Program Analysis: Unleashing the Power of Alternation
Compositional May-Must Program Analysis: Unleashing the Power of Alternation Patrice Godefroid Microsoft Research Redmond pg@microsoft.com Aditya V. Nori Microsoft Research India adityan@microsoft.com
More informationCompositional May-Must Program Analysis: Unleashing the Power of Alternation
Compositional May-Must Program Analysis: Unleashing the Power of Alternation Patrice Godefroid Aditya V. Nori Sriram K. Rajamani Sai Deep Tetali Microsoft Research pg, adityan, sriram, v-saitet@microsoft.com
More information11. Automata and languages, cellular automata, grammars, L-systems
11. Automata and languages, cellular automata, grammars, L-systems 11.1 Automata and languages Automaton (pl. automata): in computer science, a simple model of a machine or of other systems. ( a simplification
More informationStatic Program Analysis
Static Program Analysis Xiangyu Zhang The slides are compiled from Alex Aiken s Michael D. Ernst s Sorin Lerner s A Scary Outline Type-based analysis Data-flow analysis Abstract interpretation Theorem
More informationSoftware Verification using Predicate Abstraction and Iterative Refinement: Part 1
using Predicate Abstraction and Iterative Refinement: Part 1 15-414 Bug Catching: Automated Program Verification and Testing Sagar Chaki November 28, 2011 Outline Overview of Model Checking Creating Models
More informationCommon Core State Standards with California Additions 1 Standards Map. Algebra I
Common Core State s with California Additions 1 s Map Algebra I *Indicates a modeling standard linking mathematics to everyday life, work, and decision-making N-RN 1. N-RN 2. Publisher Language 2 Primary
More informationLecture 5 Introduction to Data Flow Analysis
Lecture 5 Introduction to Data Flow Analysis I. Structure of data flow analysis II. III. IV. Example 1: Reaching definition analysis Example 2: Liveness analysis Framework Phillip B. Gibbons 15-745: Intro
More informationOn the Complexity of the Minimum Independent Set Partition Problem
On the Complexity of the Minimum Independent Set Partition Problem T-H. Hubert Chan 1, Charalampos Papamanthou 2, and Zhichao Zhao 1 1 Department of Computer Science the University of Hong Kong {hubert,zczhao}@cs.hku.hk
More informationSupplementary Notes on Inductive Definitions
Supplementary Notes on Inductive Definitions 15-312: Foundations of Programming Languages Frank Pfenning Lecture 2 August 29, 2002 These supplementary notes review the notion of an inductive definition
More information