Static Program Analysis

Size: px
Start display at page:

Download "Static Program Analysis"

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 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 information

Inter-procedural Data Flow Analysis

Inter-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 information

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/ws-1617/spa/ Software Architektur Praxis-Workshop Bringen Sie Informatik

More information

DFA of non-distributive properties

DFA 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 information

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/ws-1617/spa/ Software Architektur Praxis-Workshop Bringen Sie Informatik

More information

Principles of Program Analysis: Data Flow Analysis

Principles 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 information

Semantics and Verification of Software

Semantics 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 information

Static Program Analysis

Static 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 information

Semantics and Verification of Software

Semantics 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 information

Static Program Analysis

Static 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 information

Adventures in Dataflow Analysis

Adventures 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 information

Foundations of Informatics: a Bridging Course

Foundations 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 information

Two Approaches to Interprocedural Data Flow Analysis

Two 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 information

Compiler Construction

Compiler 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 information

1 Introduction. 2 Recap The Typed λ-calculus λ. 3 Simple Data Structures

1 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 information

CSC 7101: Programming Language Structures 1. Axiomatic Semantics. Stansifer Ch 2.4, Ch. 9 Winskel Ch.6 Slonneger and Kurtz Ch. 11.

CSC 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 information

Flow grammars a flow analysis methodology

Flow 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 information

Computational Models Lecture 8 1

Computational 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 information

Principles of Program Analysis: Control Flow Analysis

Principles 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 information

Axiomatic 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 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 information

CS156: The Calculus of Computation

CS156: 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 information

Theory of Computer Science

Theory 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 information

Computation of Alias Sets from Shape Graphs for Comparison of Shape Analysis Precision

Computation 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 information

Lecture 11 Sections 4.5, 4.7. Wed, Feb 18, 2009

Lecture 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 information

EXAM. CS331 Compiler Design Spring Please read all instructions, including these, carefully

EXAM. 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 information

Computational Models Lecture 8 1

Computational 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 information

EDA045F: Program Analysis LECTURE 10: TYPES 1. Christoph Reichenbach

EDA045F: 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 information

Computational Models Lecture 8 1

Computational 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 information

COSE312: Compilers. Lecture 17 Intermediate Representation (2)

COSE312: 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 information

CS156: The Calculus of Computation Zohar Manna Autumn 2008

CS156: 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 information

Precise Interprocedural Analysis using Random Interpretation

Precise 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 information

Lecture 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 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 information

Dataflow Analysis. Chapter 9, Section 9.2, 9.3, 9.4

Dataflow 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 information

Context Free Grammars

Context 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 information

Probabilistic Model Checking and [Program] Analysis (CO469)

Probabilistic 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 information

COMPUTER SCIENCE TRIPOS

COMPUTER 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 information

Programming Language Concepts, CS2104 Lecture 3

Programming 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 information

Theory of Computer Science. Theory of Computer Science. D8.1 Other Halting Problem Variants. D8.2 Rice s Theorem

Theory 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 information

Lecture Notes on Inductive Definitions

Lecture 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 information

Intra-procedural Data Flow Analysis Backwards analyses

Intra-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 information

Data 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 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 information

Notes 6 : First and second moment methods

Notes 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 information

Program Slicing. Author: Mark Weiser Published in TSE, Presented by Peeratham (Karn) Techapalokul 10/13/2015

Program 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 information

Software Verification

Software 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 information

COMP 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 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 information

Syntax Analysis Part I

Syntax 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 information

Harvard 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 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 information

Extended Weighted Pushdown Systems

Extended 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 information

Spring 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 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 information

CMSC 631 Program Analysis and Understanding. Spring Data Flow Analysis

CMSC 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 information

Syntax Analysis Part III

Syntax 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 information

Probabilistic Program Analysis

Probabilistic 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 information

CSC 4181Compiler Construction. Context-Free Grammars Using grammars in parsers. Parsing Process. Context-Free Grammar

CSC 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 information

Model Checking & Program Analysis

Model 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 information

Dataflow Analysis - 2. Monotone Dataflow Frameworks

Dataflow 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 information

Disjunctive relational abstract interpretation for interprocedural program analysis

Disjunctive 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 information

CSE302: Compiler Design

CSE302: 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 information

Modular Lattices for Compositional Interprocedural Analysis. by Ghila Castelnuovo

Modular 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 information

Roy L. Crole. Operational Semantics Abstract Machines and Correctness. University of Leicester, UK

Roy 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 information

Program Analysis Probably Counts

Program 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 information

MA/CSSE 474 Theory of Computation

MA/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 information

CA Compiler Construction

CA 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 information

Spring 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 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 information

Finite Automata and Formal Languages TMV026/DIT321 LP4 2012

Finite 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 information

COMP 3161/9161 Week 2

COMP 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 information

Finite Automata and Formal Languages

Finite 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 information

Algebra II Summer Packet. Summer Name:

Algebra 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 information

Finite Presentations of Pregroups and the Identity Problem

Finite 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 information

Syntactic Analysis. Top-Down Parsing

Syntactic 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 information

SFM-11:CONNECT Summer School, Bertinoro, June 2011

SFM-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 information

Syntax Analysis Part I

Syntax 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 information

Verification of Recursive Programs. Andreas Podelski February 8, 2012

Verification 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 information

Recent developments in concurrent program logics

Recent 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 information

Termination Graphs for Java Bytecode. Marc Brockschmidt, Carsten Otto, Christian von Essen, Jürgen Giesl

Termination 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 information

Administrivia. 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 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 information

Syntax Analysis Part I. Position of a Parser in the Compiler Model. The Parser. Chapter 4

Syntax 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 information

Languages. Languages. An Example Grammar. Grammars. Suppose we have an alphabet V. Then we can write:

Languages. 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 information

AP Physics C Syllabus

AP 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 information

CSC D70: Compiler Optimization Dataflow-2 and Loops

CSC 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 information

Automatic Verification of Parameterized Data Structures

Automatic 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 information

The 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 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 information

Semantics and Verification

Semantics 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 information

Notes on Complexity Theory Last updated: December, Lecture 27

Notes 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 information

Chapter 5. Finite Automata

Chapter 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 information

Even More on Dynamic Programming

Even 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 information

Topic-I-C Dataflow Analysis

Topic-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 information

Notes for Lecture 3... x 4

Notes 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 information

Lecture 3: Decidability

Lecture 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 information

An example of a decidable language that is not a CFL Implementation-level description of a TM State diagram of TM

An 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 information

Why 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 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 information

Student Session Topic: Average and Instantaneous Rates of Change

Student 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 information

Compositional May-Must Program Analysis: Unleashing the Power of Alternation

Compositional 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 information

Compositional May-Must Program Analysis: Unleashing the Power of Alternation

Compositional 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 information

11. Automata and languages, cellular automata, grammars, L-systems

11. 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 information

Static Program Analysis

Static 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 information

Software Verification using Predicate Abstraction and Iterative Refinement: Part 1

Software 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 information

Common Core State Standards with California Additions 1 Standards Map. Algebra I

Common 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 information

Lecture 5 Introduction to Data Flow Analysis

Lecture 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 information

On the Complexity of the Minimum Independent Set Partition Problem

On 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 information

Supplementary Notes on Inductive Definitions

Supplementary 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