Fundamentals of Software Engineering

Size: px
Start display at page:

Download "Fundamentals of Software Engineering"

Transcription

1 Fundamentals of Software Engineering Reasoning about Programs with Dynamic Logic - Part II Ina Schaefer Institute for Software Systems Engineering TU Braunschweig, Germany Slides by Wolfgang Ahrendt, Richard Bubel, Reiner Hähnle (Chalmers University of Technology, Gothenburg, Sweden) Ina Schaefer FSE 1

2 Repetition: Dynamic Logic (Java) Dynamic Logic Typed FOL + programs p Ina Schaefer FSE 2

3 Repetition: Dynamic Logic (Java) Dynamic Logic Typed FOL + programs p + modalities p φ, [p]φ (p program, φ DL formula) Ina Schaefer FSE 3

4 Repetition: Dynamic Logic (Java) Dynamic Logic Typed FOL + programs p + modalities p φ, [p]φ (p program, φ DL formula) +... (later) Ina Schaefer FSE 4

5 Repetition: Dynamic Logic (Java) Dynamic Logic Typed FOL + programs p + modalities p φ, [p]φ (p program, φ DL formula) +... (later) Remark on Hoare Logic and DL In Hoare logic {Pre} p {Post} In DL Pre [p]post (Pre, Post must be FOL) (Pre, Post any DL formula) Ina Schaefer FSE 5

6 Proving DL Formulas An Example int x; (x. = n x >= 0 [ i = 0; r = 0; while(i < n){i = i + 1; r = r + i; } r = r + r n; ]r. = x x) How can we prove that the above formula is valid (i.e. satisfied in all states)? Ina Schaefer FSE 6

7 Semantics of Sequents Γ = {φ 1,..., φ n } and = {ψ 1,..., ψ m } sets of program formulas where all logical variables occur bound Recall: s = (Γ = ) iff s = (φ 1 φ n ) (ψ 1 ψ m ) Define semantics of DL sequents identical to semantics of FOL sequents Definition (Validity of Sequents over Program Formulas) A sequent Γ = over program formulas is valid iff s = (Γ = ) in all states s Ina Schaefer FSE 7

8 Semantics of Sequents Γ = {φ 1,..., φ n } and = {ψ 1,..., ψ m } sets of program formulas where all logical variables occur bound Recall: s = (Γ = ) iff s = (φ 1 φ n ) (ψ 1 ψ m ) Define semantics of DL sequents identical to semantics of FOL sequents Definition (Validity of Sequents over Program Formulas) A sequent Γ = over program formulas is valid iff s = (Γ = ) in all states s Consequence for program variables Initial value of program variables implicitly universally quantified Ina Schaefer FSE 8

9 Symbolic Execution of Programs Sequent calculus decomposes top-level operator in formula What is top-level in a sequential program p; q; r;? Symbolic Execution (King, late 60s) Follow the natural control flow when analysing a program Values of some variables unknown: symbolic state representation Ina Schaefer FSE 9

10 Symbolic Execution of Programs Sequent calculus decomposes top-level operator in formula What is top-level in a sequential program p; q; r;? Symbolic Execution (King, late 60s) Follow the natural control flow when analysing a program Values of some variables unknown: symbolic state representation Example Compute the final state after termination of int x; int y; x=x+y; y=x-y; x=x-y; Ina Schaefer FSE 10

11 Symbolic Execution of Programs Cont d General form of rule conclusions in symbolic execution calculus stmt; rest φ, [stmt; rest]φ Rules symbolically execute first statement ( active statement ) Repeated application of such rules corresponds to symbolic program execution Ina Schaefer FSE 11

12 \problem { x > y -> \<{x=x+y; y=x-y; x=x-y;}\> y > x } Ina Schaefer FSE 12 Symbolic Execution of Programs Cont d General form of rule conclusions in symbolic execution calculus stmt; rest φ, [stmt; rest]φ Rules symbolically execute first statement ( active statement ) Repeated application of such rules corresponds to symbolic program execution Example (updates/swap2.key, \programvariables { int x; int y; } Demo, active statement)

13 Symbolic Execution of Programs Cont d Symbolic execution of conditional if Γ, b. = true = p; rest φ, Γ, b. = false = q; rest φ, Γ = if (b) { p } else { q } ; rest φ, Symbolic execution must consider all possible execution branches Ina Schaefer FSE 13

14 Symbolic Execution of Programs Cont d Symbolic execution of conditional if Γ, b. = true = p; rest φ, Γ, b. = false = q; rest φ, Γ = if (b) { p } else { q } ; rest φ, Symbolic execution must consider all possible execution branches Symbolic execution of loops: unwind unwindloop Γ = if (b) { p; while (b) p}; rest φ, Γ = while (b) {p}; rest φ, Ina Schaefer FSE 14

15 Updates for KeY-Style Symbolic Execution Needed: a Notation for Symbolic State Changes symbolic execution should walk through program in natural direction need a succint representation of state changes effected by a program in one symbolic execution branch want to simplify effects of program execution early want to apply effects late (to post condition) Ina Schaefer FSE 15

16 Updates for KeY-Style Symbolic Execution Needed: a Notation for Symbolic State Changes symbolic execution should walk through program in natural direction need a succint representation of state changes effected by a program in one symbolic execution branch want to simplify effects of program execution early want to apply effects late (to post condition) We use dedicated notation for simple state changes: updates Ina Schaefer FSE 16

17 Explicit State Updates Definition (Syntax of Updates, Updated Terms/Formulas) If v is program variable, t FOL term type-compatible with v, t any FOL term, and φ any DL formula, then v := t is an update {v := t}t is DL term {v := t}φ is DL formula Definition (Semantics of Updates) State s interprets flexible symbols f with I s (f ) β variable assignment for logical variables in t, ρ transition relation: ρ({v := t})(s) = s where s identical to s except I s (v) = val s,β (t) Ina Schaefer FSE 17

18 Explicit State Updates Cont d Facts about updates {v := t} Update semantics identical to that of assignment Value of update depends on logical variables in t: use β Updates as lazy assignments (no term substitution done) Updates are not assignments: right-hand side is FOL term {x := n}φ cannot be turned into assignment (n logical variable) x=i++; φ cannot directly be turned into update Updates are not equations: change value of flexible terms Ina Schaefer FSE 18

19 Computing Effect of Updates (Automatic) Rewrite rules for update followed by... { {x := t}y y program variable {x := t}x t logical variable {x := t}w w complex term {x := t}f (t 1,..., t n ) f ({x := t}t 1,..., {x := t}t n ) (f rigid) {x := t}(φ & ψ) {x := t}φ & {x := t}ψ FOL formula {x := t}( τ y; φ) τ y; ({x := t}φ) program formula {x := t}( p φ) {x := t}( p φ) unchanged! Update computation delayed until p symbolically executed Ina Schaefer FSE 19

20 Assignment Rule Using Updates Symbolic execution of assignment using updates assign Γ = {x := t} rest φ, Γ = x = t; rest φ, Simple! No variable renaming, etc. Works as long as t has no side effects (ok in simple DL) Special cases needed for x =t 1 + t 2, etc. Demo updates/assignmenttoupdate.key Ina Schaefer FSE 20

21 Parallel Updates How to apply updates on updates? Example Symbolic execution of int x; int y; x=x+y; y=x-y; x=x-y; yields: {x := x+y}{y := x-y}{x := x-y} Need to compose three sequential state changes into a single one! Ina Schaefer FSE 21

22 Parallel Updates Cont d Definition (Parallel Update) A parallel update is expression of the form {l 1 := v 1 l n := v n } where each {l i := v i } is simple update All v i computed in old state before update is applied Updates of all locations l i executed simultaneously Upon conflict l i = l j, v i v j later update (max{i, j}) wins Ina Schaefer FSE 22

23 Parallel Updates Cont d Definition (Parallel Update) A parallel update is expression of the form {l 1 := v 1 l n := v n } where each {l i := v i } is simple update All v i computed in old state before update is applied Updates of all locations l i executed simultaneously Upon conflict l i = l j, v i v j later update (max{i, j}) wins Definition (Composition Sequential Updates/Conflict Resolution) {l 1 := r 1 }{l 2 := r 2 } = {l 1 := r 1 l 2 := {l 1 := r 1 }r 2 } { x if x {l1,..., l {l 1 := v 1 l n := v n }x = n } v k if x = l k, x {l k+1,..., l n } Ina Schaefer FSE 23

24 Parallel Updates Cont d Example ({x := x+y}{y := x-y}){x := x-y} = {x := x+y y := (x+y)-y}{x := x-y} = {x := x+y y := (x+y)-y x := (x+y)-((x+y)-y)} = {x := x+y y := x x := y} = {y := x x := y} KeY automatically deletes overwritten (unnecessary) updates Demo updates/swap2.key Ina Schaefer FSE 24

25 Parallel Updates Cont d Example ({x := x+y}{y := x-y}){x := x-y} = {x := x+y y := (x+y)-y}{x := x-y} = {x := x+y y := (x+y)-y x := (x+y)-((x+y)-y)} = {x := x+y y := x x := y} = {y := x x := y} KeY automatically deletes overwritten (unnecessary) updates Demo updates/swap2.key Parallel updates to store intermediate state of symbolic computation Ina Schaefer FSE 25

26 Another use of Updates If you would like to quantify over a program variable... Ina Schaefer FSE 26

27 Another use of Updates If you would like to quantify over a program variable... Not allowed: τ i;...i... φ (program logical variable) Ina Schaefer FSE 27

28 Another use of Updates If you would like to quantify over a program variable... Not allowed: τ i;...i... φ (program logical variable) Instead Quantify over value, and assign it to program variable: τ i 0 ; {i := i 0 }...i... φ Ina Schaefer FSE 28

29 Java Type Hierarchy Signature based on Java s type hierarchy any int boolean Object API, user-defined classes Null Each class referenced in API and target program is in signature with appropriate partial order Ina Schaefer FSE 29

30 Modelling Attributes Modeling instance attributes Person int age int id int setage(int i) int getid() Each o D Person has associated age value I(age) is function from Person to int Attribute values can be changed For each class C with attribute a of type τ: FSym nr declares flexible function τ a(c); Ina Schaefer FSE 30

31 Modelling Attributes Modeling instance attributes Person int age int id int setage(int i) int getid() Attribute Access Each o D Person has associated age value I(age) is function from Person to int Attribute values can be changed For each class C with attribute a of type τ: FSym nr declares flexible function τ a(c); Signature FSym nr : int age(person); Person p; Java/JML expression p.age >= 0 Typed FOL age(p)>=0 KeY postfix notation p.age >= 0 Navigation expressions in typed FOL look exactly as in Java/JML Ina Schaefer FSE 31

32 Modeling Attributes in FOL Cont d Resolving Overloading Overloading resolved by qualifying with class name: p.age@(person) Changing the value of attributes How to translate assignment to attribute p.age=17;? assign Γ = {l := t} rest φ, Γ = l = t; rest φ, Admit on left-hand side of update program location expressions Ina Schaefer FSE 32

33 Modeling Attributes in FOL Cont d Resolving Overloading Overloading resolved by qualifying with class name: p.age@(person) Changing the value of attributes How to translate assignment to attribute p.age=17;? assign Γ = {p.age := 17} rest φ, Γ = p.age = 17; rest φ, Admit on left-hand side of update program location expressions Ina Schaefer FSE 33

34 Generalise Definition of Updates Definition (Syntax of Updates, Updated Terms/Formulas) If l is program location (e.g., o.a), t FOL term type-compatible with l, t any FOL term, and φ any DL formula, then l := t is an update {l := t}t is DL term {l := t}φ is DL formula Definition (Semantics of Updates, Attribute Case) State s interprets attribute a with I s (a) β variable assignment for logical variables in t ρ({o.a := t})(s) = s where s identical to s except I s (a)(o) = val s,β (t) Ina Schaefer FSE 34

35 Dynamic Logic - KeY input file KeY \javasource "path to source code "; \programvariables {... } \problem { \<{ p.age = 18; }\> p.age = 18 } // Is this provable? KeY KeY reads in all source files and creates automatically the necessary signature (sorts, attribute functions) Ina Schaefer FSE 35

36 Refined Semantics of Program Modalities Does abrupt termination count as normal termination? No! Need to distinguish normal and exceptional termination Ina Schaefer FSE 36

37 Refined Semantics of Program Modalities Does abrupt termination count as normal termination? No! Need to distinguish normal and exceptional termination p φ: p terminates normally and formula φ holds in final state (total correctness) Ina Schaefer FSE 37

38 Refined Semantics of Program Modalities Does abrupt termination count as normal termination? No! Need to distinguish normal and exceptional termination p φ: p terminates normally and formula φ holds in final state (total correctness) [p]φ: If p terminates normally then formula φ holds in final state (partial correctness) Ina Schaefer FSE 38

39 Refined Semantics of Program Modalities Does abrupt termination count as normal termination? No! Need to distinguish normal and exceptional termination p φ: p terminates normally and formula φ holds in final state (total correctness) [p]φ: If p terminates normally then formula φ holds in final state (partial correctness) Abrupt termination counts as non-termination! Ina Schaefer FSE 39

40 Dynamic Logic - KeY input file KeY \javasource "path to source code "; \programvariables {... } \problem { p!= null -> \<{ p.age = 18; }\> p.age = 18 } Only provable when no top-level exception thrown KeY Ina Schaefer FSE 40

41 A Warning on Updates Computing the effect of updates with attribute locations is complex Example C a C b C Signature FSym nr : C a(c); C b(c); C o; Ina Schaefer FSE 41

42 A Warning on Updates Computing the effect of updates with attribute locations is complex Example C a C b C Signature FSym nr : C a(c); C b(c); C o; Consider {o.a := o}{o.b := o.a} Ina Schaefer FSE 42

43 A Warning on Updates Computing the effect of updates with attribute locations is complex Example C a C b C Signature FSym nr : C a(c); C b(c); C o; Consider {o.a := o}{o.b := o.a} First update may affect left side of second update Ina Schaefer FSE 43

44 A Warning on Updates Computing the effect of updates with attribute locations is complex Example C a C b C Signature FSym nr : C a(c); C b(c); C o; Consider {o.a := o}{o.b := o.a} First update may affect left side of second update o.a and o.b might refer to same object (be aliases) Ina Schaefer FSE 44

45 A Warning on Updates Computing the effect of updates with attribute locations is complex Example C a C b C Signature FSym nr : C a(c); C b(c); C o; Consider {o.a := o}{o.b := o.a} First update may affect left side of second update o.a and o.b might refer to same object (be aliases) KeY applies rules automatically, you don t need to worry about details Ina Schaefer FSE 45

46 Modeling Static Attributes in FOL Modeling class (static) attributes For each class C with static attribute a of type τ: FSym nr declares flexible constant τ a; Value of a is I(a) for all instances of C If necessary, qualify with class (path): byte java.lang.byte.max_value Standard values are predefined in KeY: I(java.lang.Byte.MAX_VALUE) = 127 Ina Schaefer FSE 46

47 The Self Reference Modeling reference this to the receiving object Special name for the object whose Java code is currently executed: in JML: Object this; in Java: Object this; in KeY: Object self; Default assumption in JML-KeY translation: self! = null Ina Schaefer FSE 47

48 Which Objects do Exist? How to model object creation with new? Ina Schaefer FSE 48

49 Which Objects do Exist? How to model object creation with new? Constant Domain Assumption Assume that domain D is the same in all states of LTS K = (S, ρ) Desirable consequence: Validity of rigid FOL formulas unaffected by programs containing new() = τ x; φ > [p]( τ x; φ) is valid for rigid φ Ina Schaefer FSE 49

50 Which Objects do Exist? (2) Realizing Constant Domain Assumption Flexible function boolean <created>(object); Equal to true iff argument object has been created Initialized as I(<created>)(o) = F for all o D Object creation modeled as {o.<created> := true} for next free o Ina Schaefer FSE 50

51 Extending Dynamic Logic to Java KeY admits any syntactically correct Java with some extensions: Needs not be compilable unit Permit externally declared, non-initialized variables All referenced class definitions loaded in background And some limitations... Limited concurrency No generics No I/O No floats No dynamic class loading or reflexion API method calls: need either JML contract or implementation Ina Schaefer FSE 51

52 Java Features in Dynamic Logic: Arrays Arrays any Java type hierarchy includes array types that occur in given program (for finiteness) Object Object[] Object[][] Ina Schaefer FSE 52

53 Java Features in Dynamic Logic: Arrays Arrays any Object Java type hierarchy includes array types that occur in given program (for finiteness) Types ordered according to Java subtyping rules Object[] Object[][] Ina Schaefer FSE 53

54 Java Features in Dynamic Logic: Arrays Arrays any Object Java type hierarchy includes array types that occur in given program (for finiteness) Types ordered according to Java subtyping rules The flexible functions that model attributes can have an array result type Object[] Object[][] Ina Schaefer FSE 54

55 Java Features in Dynamic Logic: Arrays Arrays any Object Object[] Java type hierarchy includes array types that occur in given program (for finiteness) Types ordered according to Java subtyping rules The flexible functions that model attributes can have an array result type Value of entry in array T[] ar; defined in class C depends on reference ar to array in C and index Object[][] Ina Schaefer FSE 55

56 Java Features in Dynamic Logic: Arrays Arrays any Object Object[] Object[][] Java type hierarchy includes array types that occur in given program (for finiteness) Types ordered according to Java subtyping rules The flexible functions that model attributes can have an array result type Value of entry in array T[] ar; defined in class C depends on reference ar to array in C and index Model array with flexible function T [](C,int) Ina Schaefer FSE 56

57 Java Features in Dynamic Logic: Arrays Arrays any Object Object[] Object[][] Java type hierarchy includes array types that occur in given program (for finiteness) Types ordered according to Java subtyping rules The flexible functions that model attributes can have an array result type Value of entry in array T[] ar; defined in class C depends on reference ar to array in C and index Model array with flexible function T [](C,int) Instead of [](ar,i) write ar[i] Ina Schaefer FSE 57

58 Java Features in Dynamic Logic: Arrays Arrays any Object Object[] Object[][] Java type hierarchy includes array types that occur in given program (for finiteness) Types ordered according to Java subtyping rules The flexible functions that model attributes can have an array result type Value of entry in array T[] ar; defined in class C depends on reference ar to array in C and index Model array with flexible function T [](C,int) Instead of [](ar,i) write ar[i] Arrays a and b can refer to same object (aliases) Ina Schaefer FSE 58

59 Java Features in Dynamic Logic: Arrays Arrays any Object Object[] Object[][] Java type hierarchy includes array types that occur in given program (for finiteness) Types ordered according to Java subtyping rules The flexible functions that model attributes can have an array result type Value of entry in array T[] ar; defined in class C depends on reference ar to array in C and index Model array with flexible function T [](C,int) Instead of [](ar,i) write ar[i] Arrays a and b can refer to same object (aliases) KeY implements update application and simplification rules for array locations Ina Schaefer FSE 59

60 Java Features in Dynamic Logic: Complex Expressions Complex expressions with side effects Java expressions may contain assignment operator with side effect Java expressions can be complex, nested, have method calls FOL terms have no side effect on the state Example (Complex expression with side effects in Java) int i = 0; if ((i=2)>= 2) i++; value of i? Ina Schaefer FSE 60

61 Complex Expressions Cont d Decomposition of complex terms by symbolic execution Follow the rules laid down in Java Language Specification Local code transformations evalorderiteratedassgnmt Γ = y = t; x = y; rest φ, Γ = x = y = t; rest φ, t simple Temporary variables store result of evaluating subexpression ifeval Γ = boolean v0; v0 = b; if (v0) p; r φ, Γ = if (b) p; r φ, b complex Guards of conditionals/loops always evaluated (hence: side effect-free) before conditional/unwind rules applied Ina Schaefer FSE 61

62 Java Features in Dynamic Logic: Abrupt Termination Abrupt Termination: Exceptions and Jumps Redirection of control flow via return, break, continue, exceptions π try {p} catch(e) {q} finally {r} ω φ Rules ignore inactive prefix, work on active statement, leave postfix Ina Schaefer FSE 62

63 Java Features in Dynamic Logic: Abrupt Termination Abrupt Termination: Exceptions and Jumps Redirection of control flow via return, break, continue, exceptions π try {p} catch(e) {q} finally {r} ω φ Rules ignore inactive prefix, work on active statement, leave postfix Rule trythrow matches try catch in pre-/postfix and active throw = π if (e instanceof T){try{x=e;q} finally{r}}else{r;throw e;} ω φ = π try {throw e; p} catch(t x) {q} finally {r} ω φ Demo: exceptions/try-catch.key Ina Schaefer FSE 63

64 Java Features in Dynamic Logic: Aliasing Form of Java program locations Program variable x Attribute access o.a Array access ar[i] Reference Aliasing Naive alias resolution causes proof split (on o =. u) at each access = o.age =. 1 > u.age = 2; o.age = 2; o.age =. u.age = o.age =. 1 > u.age = 2; u.age =. 2 Ina Schaefer FSE 64

65 Aliasing Cont d Assignment rule for arbitrary Java locations assign Γ = U{l := t} π ω φ, Γ = U πl = t; ω φ, Updates in front of program formula (= current state) carried over Rules for applying updates complex for reference types Aliasing analysis causes case split: delayed using conditional terms {o.a := t}u.a \if ({o.a := t}u. = o) \then (t) \else ({o.a := t}u).a Ina Schaefer FSE 65

66 Java Features in Dynamic Logic: Method Calls Method Call with actual parameters arg 0,..., arg n {arg 0 := t 0 arg n := t n c := t c } c.m(arg 0,..., arg n ); φ where m declared as void m(τ 0 p 0,..., τ n p n ) Actions of rule methodcall type conformance of arg i to τ i guaranteed by Java compiler for each formal parameter p i of m: declare and initialize new local variable τ i p#i =arg i ; look up implementation class C of m and split proof if implementation cannot be uniquely determined create concrete method invocation c.m(p#0,..., p#n)@c Ina Schaefer FSE 66

67 Method Calls Cont d Method Body Expand 1. Execute code that binds actual to formal parameters τ i p#i =arg i ; 2. Call rule methodbodyexpand Γ = π method-frame(source=c, this=c){ body } ω φ, Γ = π c.m(p#0,...,p#n)@c; ω φ, Ina Schaefer FSE 67

68 Method Calls Cont d Method Body Expand 1. Execute code that binds actual to formal parameters τ i p#i =arg i ; 2. Call rule methodbodyexpand Γ = π method-frame(source=c, this=c){ body } ω φ, Γ = π c.m(p#0,...,p#n)@c; ω φ, Symbolic Execution Only static information available, proof splitting Ina Schaefer FSE 68

69 Method Calls Cont d Method Body Expand 1. Execute code that binds actual to formal parameters τ i p#i =arg i ; 2. Call rule methodbodyexpand Γ = π method-frame(source=c, this=c){ body } ω φ, Γ = π c.m(p#0,...,p#n)@c; ω φ, Symbolic Execution Runtime infrastructure required in calculus Ina Schaefer FSE 69

70 Method Calls Cont d Method Body Expand 1. Execute code that binds actual to formal parameters τ i p#i =arg i ; 2. Call rule methodbodyexpand Γ = π method-frame(source=c, this=c){ body } ω φ, Γ = π c.m(p#0,...,p#n)@c; ω φ, Symbolic Execution Runtime infrastructure required in calculus Demo methods/instancemethodinlinesimple.key, argumentevaluationorder.key, inlinedynamicdispatch.key Ina Schaefer FSE 70

71 A Round Tour of Java Features in DL Cont d Localisation of Fields and Method Implementation Java has complex rules for localisation of attributes and method implementations Polymorphism Late binding Scoping (class vs. instance) Context (static vs. runtime) Visibility (private, protected, public) Use information from semantic analysis of compiler framework Proof split into cases when implementation not statically determined Ina Schaefer FSE 71

72 A Round Tour of Java Features in DL Cont d Null pointer exceptions There are no exceptions in FOL: I total on FSym Need to model possibility that o =. null in o.a KeY creates PO for o!= null upon each field access Ina Schaefer FSE 72

73 A Round Tour of Java Features in DL Cont d Object initialization Java has complex rules for object initialization Chain of constructor calls until Object Implicit calls to super() Visbility issues Initialization sequence Coding of initialization rules in methods <createobject>(), <init>(),... which are then symbolically executed Ina Schaefer FSE 73

74 Summary Most Java features covered in KeY Several of remaining features available in experimental version Simplified multi-threaded JMM Floats Degree of automation for loop-free programs is very high Proving loops requires user to provide invariant Automatic invariant generation sometimes possible Symbolic execution paradigm lets you use KeY w/o understanding details of logic Ina Schaefer FSE 74

75 Literature for this Lecture Essential KeY Book Verification of Object-Oriented Software (see course web page), Chapter 10: Using KeY KeY Book Verification of Object-Oriented Software (see course web page), Chapter 3: Dynamic Logic, Sections 3.1, 3.2, 3.4, 3.5, 3.6.1, 3.6.2, 3.6.3, 3.6.4, 3.6.5, Ina Schaefer FSE 75

Fundamentals of Software Engineering

Fundamentals of Software Engineering Fundamentals of Software Engineering Reasoning about Programs with Dynamic Logic - Part II Ina Schaefer Institute for Software Systems Engineering TU Braunschweig, Germany Slides by Wolfgang Ahrendt, Richard

More information

Software Engineering using Formal Methods

Software Engineering using Formal Methods Software Engineering using Formal Methods Reasoning about Programs with Dynamic Logic Wolfgang Ahrendt & Richard Bubel & Wojciech Mostowski 5 October 2011 SEFM: Java DL /GU 111005 1 / 45 Dynamic Logic

More information

Fundamentals of Software Engineering

Fundamentals of Software Engineering Fundamentals of Software Engineering Reasoning about Programs with Dynamic Logic - Part I Ina Schaefer Institute for Software Systems Engineering TU Braunschweig, Germany Slides by Wolfgang Ahrendt, Richard

More information

Fundamentals of Software Engineering

Fundamentals of Software Engineering Fundamentals of Software Engineering Reasoning about Programs - Selected Features Ina Schaefer Institute for Software Systems Engineering TU Braunschweig, Germany Slides by Wolfgang Ahrendt, Richard Bubel,

More information

Introduction to JavaCard Dynamic Logic

Introduction to JavaCard Dynamic Logic Introduction to JavaCard Dynamic Logic Prof. P. H. Schmitt, Christian Engel, Benjamin Weiß December 10, 2008 Introduction to JavaCard Dynamic Logic December 10, 2008 1 / 13 Some Java Features Assignments,

More information

Formal Systems II: Applications

Formal Systems II: Applications Formal Systems II: Applications Functional Verification of Java Programs: Java Dynamic Logic Bernhard Beckert Mattias Ulbrich SS 2017 KIT INSTITUT FÜR THEORETISCHE INFORMATIK KIT University of the State

More information

From OCL to Typed First-order Logic

From OCL to Typed First-order Logic 22c181: Formal Methods in Software Engineering The University of Iowa Spring 2008 From OCL to Typed First-order Logic Copyright 2007-8 Reiner Hähnle and Cesare Tinelli. Notes originally developed by Reiner

More information

Formal Specification and Verification

Formal Specification and Verification Formal Specification and Verification Proof Obligations Bernhard Beckert Based on a lecture by Wolfgang Ahrendt and Reiner Hähnle at Chalmers University, Göteborg Formal Specification and Verification:

More information

Typed First-order Logic

Typed First-order Logic 22c181: Formal Methods in Software Engineering The University of Iowa Spring 2008 Typed First-order Logic Copyright 2007-8 Reiner Hähnle and Cesare Tinelli. Notes originally developed by Reiner Hähnle

More information

Software Engineering using Formal Methods

Software Engineering using Formal Methods Software Engineering using Formal Methods Introduction to Promela Wolfgang Ahrendt & Richard Bubel & Reiner Hähnle & Wojciech Mostowski 31 August 2011 SEFM: Promela /GU 110831 1 / 35 Towards Model Checking

More information

Weiss Chapter 1 terminology (parenthesized numbers are page numbers)

Weiss Chapter 1 terminology (parenthesized numbers are page numbers) Weiss Chapter 1 terminology (parenthesized numbers are page numbers) assignment operators In Java, used to alter the value of a variable. These operators include =, +=, -=, *=, and /=. (9) autoincrement

More information

Formal Specification and Verification

Formal Specification and Verification Formal Specification and Verification Introduction to Promela Bernhard Beckert Based on a lecture by Wolfgang Ahrendt and Reiner Hähnle at Chalmers University, Göteborg Formal Specification and Verification:

More information

Software Engineering using Formal Methods

Software Engineering using Formal Methods Software Engineering using Formal Methods Introduction to Promela Wolfgang Ahrendt 03 September 2015 SEFM: Promela /GU 150903 1 / 36 Towards Model Checking System Model Promela Program byte n = 0; active

More information

COMBINING PARTIAL EVALUATION AND SYMBOLIC EXECUTION

COMBINING PARTIAL EVALUATION AND SYMBOLIC EXECUTION COMBINING PARTIAL EVALUATION AND SYMBOLIC EXECUTION Reiner Hähnle & Richard Bubel Chalmers University Symposium 09 Speyer CONTROL CIRCUIT y = 80; threshold = 100; if (y > threshold) { decrease = true;

More information

15-819M: Data, Code, Decisions

15-819M: Data, Code, Decisions 15-819M: Data, Code, Decisions 08: First-Order Logic André Platzer aplatzer@cs.cmu.edu Carnegie Mellon University, Pittsburgh, PA André Platzer (CMU) 15-819M/08: Data, Code, Decisions 1 / 40 Outline 1

More information

UNIT 3

UNIT 3 UNIT 3 Presentation Outline Sequence control with expressions Conditional Statements, Loops Exception Handling Subprogram definition and activation Simple and Recursive Subprogram Subprogram Environment

More information

Application: Programming Language Semantics

Application: Programming Language Semantics Chapter 8 Application: Programming Language Semantics Prof. Dr. K. Madlener: Specification and Verification in Higher Order Logic 527 Introduction to Programming Language Semantics Programming Language

More information

Verifying Java Programs Verifying Java Programs with KeY

Verifying Java Programs Verifying Java Programs with KeY Verifying Java Programs Verifying Java Programs with KeY Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.jku.at

More information

A Short Summary of Javali

A Short Summary of Javali A Short Summary of Javali October 15, 2015 1 Introduction Javali is a simple language based on ideas found in languages like C++ or Java. Its purpose is to serve as the source language for a simple compiler

More information

From OCL to Propositional and First-order Logic: Part I

From OCL to Propositional and First-order Logic: Part I 22c181: Formal Methods in Software Engineering The University of Iowa Spring 2008 From OCL to Propositional and First-order Logic: Part I Copyright 2007-8 Reiner Hähnle and Cesare Tinelli. Notes originally

More information

1 Introduction. 3 Syntax

1 Introduction. 3 Syntax CS 6110 S18 Lecture 19 Typed λ-calculus 1 Introduction Type checking is a lightweight technique for proving simple properties of programs. Unlike theorem-proving techniques based on axiomatic semantics,

More information

COS 320. Compiling Techniques

COS 320. Compiling Techniques Topic 5: Types COS 320 Compiling Techniques Princeton University Spring 2016 Lennart Beringer 1 Types: potential benefits (I) 2 For programmers: help to eliminate common programming mistakes, particularly

More information

Programming Languages Third Edition

Programming Languages Third Edition Programming Languages Third Edition Chapter 12 Formal Semantics Objectives Become familiar with a sample small language for the purpose of semantic specification Understand operational semantics Understand

More information

Verifying Java Programs with KeY

Verifying Java Programs with KeY Verifying Java Programs with KeY Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.jku.at Wolfgang

More information

Intermediate Code Generation

Intermediate Code Generation Intermediate Code Generation In the analysis-synthesis model of a compiler, the front end analyzes a source program and creates an intermediate representation, from which the back end generates target

More information

Verifying Java Programs Verifying Java Programs with KeY

Verifying Java Programs Verifying Java Programs with KeY Verifying Java Programs Verifying Java Programs with KeY Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.jku.at

More information

Lecture #23: Conversion and Type Inference

Lecture #23: Conversion and Type Inference Lecture #23: Conversion and Type Inference Administrivia. Due date for Project #2 moved to midnight tonight. Midterm mean 20, median 21 (my expectation: 17.5). Last modified: Fri Oct 20 10:46:40 2006 CS164:

More information

CONTENTS. PART 1 Structured Programming 1. 1 Getting started 3. 2 Basic programming elements 17

CONTENTS. PART 1 Structured Programming 1. 1 Getting started 3. 2 Basic programming elements 17 List of Programs xxv List of Figures xxix List of Tables xxxiii Preface to second version xxxv PART 1 Structured Programming 1 1 Getting started 3 1.1 Programming 3 1.2 Editing source code 5 Source code

More information

Conversion vs. Subtyping. Lecture #23: Conversion and Type Inference. Integer Conversions. Conversions: Implicit vs. Explicit. Object x = "Hello";

Conversion vs. Subtyping. Lecture #23: Conversion and Type Inference. Integer Conversions. Conversions: Implicit vs. Explicit. Object x = Hello; Lecture #23: Conversion and Type Inference Administrivia. Due date for Project #2 moved to midnight tonight. Midterm mean 20, median 21 (my expectation: 17.5). In Java, this is legal: Object x = "Hello";

More information

CSE 307: Principles of Programming Languages

CSE 307: Principles of Programming Languages 1 / 26 CSE 307: Principles of Programming Languages Names, Scopes, and Bindings R. Sekar 2 / 26 Topics Bindings 1. Bindings Bindings: Names and Attributes Names are a fundamental abstraction in languages

More information

CS 6110 S11 Lecture 25 Typed λ-calculus 6 April 2011

CS 6110 S11 Lecture 25 Typed λ-calculus 6 April 2011 CS 6110 S11 Lecture 25 Typed λ-calculus 6 April 2011 1 Introduction Type checking is a lightweight technique for proving simple properties of programs. Unlike theorem-proving techniques based on axiomatic

More information

Introduction to Programming Using Java (98-388)

Introduction to Programming Using Java (98-388) Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;

More information

Intermediate Code Generation Part II

Intermediate Code Generation Part II Intermediate Code Generation Part II Chapter 6: Type checking, Control Flow Slides adapted from : Robert van Engelen, Florida State University Static versus Dynamic Checking Static checking: the compiler

More information

3.7 Denotational Semantics

3.7 Denotational Semantics 3.7 Denotational Semantics Denotational semantics, also known as fixed-point semantics, associates to each programming language construct a well-defined and rigorously understood mathematical object. These

More information

Type Checking and Type Inference

Type Checking and Type Inference Type Checking and Type Inference Principles of Programming Languages CSE 307 1 Types in Programming Languages 2 Static Type Checking 3 Polymorphic Type Inference Version: 1.8 17:20:56 2014/08/25 Compiled

More information

1 Shyam sir JAVA Notes

1 Shyam sir JAVA Notes 1 Shyam sir JAVA Notes 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write

More information

Assignment 4: Semantics

Assignment 4: Semantics Assignment 4: Semantics 15-411: Compiler Design Jan Hoffmann Jonathan Burns, DeeDee Han, Anatol Liu, Alice Rao Due Thursday, November 3, 2016 (9:00am) Reminder: Assignments are individual assignments,

More information

Formal Specification and Verification

Formal Specification and Verification Formal Specification and Verification Formal Specification, Part III Bernhard Beckert Adaptation of slides by Wolfgang Ahrendt Chalmers University, Gothenburg, Sweden Formal Specification and Verification:

More information

Operators and Expressions

Operators and Expressions Operators and Expressions Conversions. Widening and Narrowing Primitive Conversions Widening and Narrowing Reference Conversions Conversions up the type hierarchy are called widening reference conversions

More information

Compilation 2012 Static Type Checking

Compilation 2012 Static Type Checking Compilation 2012 Jan Midtgaard Michael I. Schwartzbach Aarhus University The Type Checker The type checker has several tasks: determine the types of all expressions check that values and variables are

More information

3. Java - Language Constructs I

3. Java - Language Constructs I Names and Identifiers A program (that is, a class) needs a name public class SudokuSolver {... 3. Java - Language Constructs I Names and Identifiers, Variables, Assignments, Constants, Datatypes, Operations,

More information

3. Java - Language Constructs I

3. Java - Language Constructs I Educational Objectives 3. Java - Language Constructs I Names and Identifiers, Variables, Assignments, Constants, Datatypes, Operations, Evaluation of Expressions, Type Conversions You know the basic blocks

More information

Lectures 20, 21: Axiomatic Semantics

Lectures 20, 21: Axiomatic Semantics Lectures 20, 21: Axiomatic Semantics Polyvios Pratikakis Computer Science Department, University of Crete Type Systems and Static Analysis Based on slides by George Necula Pratikakis (CSD) Axiomatic Semantics

More information

Towards a Logical Reconstruction of Relational Database Theory

Towards a Logical Reconstruction of Relational Database Theory Towards a Logical Reconstruction of Relational Database Theory On Conceptual Modelling, Lecture Notes in Computer Science. 1984 Raymond Reiter Summary by C. Rey November 27, 2008-1 / 63 Foreword DB: 2

More information

Index. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107

Index. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107 A abbreviations 17 abstract class 105 abstract data types 105 abstract method 105 abstract types 105 abstraction 92, 105 access level 37 package 114 private 115 protected 115 public 115 accessors 24, 105

More information

Computer Science II (20073) Week 1: Review and Inheritance

Computer Science II (20073) Week 1: Review and Inheritance Computer Science II 4003-232-01 (20073) Week 1: Review and Inheritance Richard Zanibbi Rochester Institute of Technology Review of CS-I Hardware and Software Hardware Physical devices in a computer system

More information

Types. Type checking. Why Do We Need Type Systems? Types and Operations. What is a type? Consensus

Types. Type checking. Why Do We Need Type Systems? Types and Operations. What is a type? Consensus Types Type checking What is a type? The notion varies from language to language Consensus A set of values A set of operations on those values Classes are one instantiation of the modern notion of type

More information

CS 242. Fundamentals. Reading: See last slide

CS 242. Fundamentals. Reading: See last slide CS 242 Fundamentals Reading: See last slide Syntax and Semantics of Programs Syntax The symbols used to write a program Semantics The actions that occur when a program is executed Programming language

More information

RSL Reference Manual

RSL Reference Manual RSL Reference Manual Part No.: Date: April 6, 1990 Original Authors: Klaus Havelund, Anne Haxthausen Copyright c 1990 Computer Resources International A/S This document is issued on a restricted basis

More information

Compilers. Type checking. Yannis Smaragdakis, U. Athens (original slides by Sam

Compilers. Type checking. Yannis Smaragdakis, U. Athens (original slides by Sam Compilers Type checking Yannis Smaragdakis, U. Athens (original slides by Sam Guyer@Tufts) Summary of parsing Parsing A solid foundation: context-free grammars A simple parser: LL(1) A more powerful parser:

More information

Contents. Figures. Tables. Examples. Foreword. Preface. 1 Basics of Java Programming 1. xix. xxi. xxiii. xxvii. xxix

Contents. Figures. Tables. Examples. Foreword. Preface. 1 Basics of Java Programming 1. xix. xxi. xxiii. xxvii. xxix PGJC4_JSE8_OCA.book Page ix Monday, June 20, 2016 2:31 PM Contents Figures Tables Examples Foreword Preface xix xxi xxiii xxvii xxix 1 Basics of Java Programming 1 1.1 Introduction 2 1.2 Classes 2 Declaring

More information

Programming Languages Third Edition. Chapter 7 Basic Semantics

Programming Languages Third Edition. Chapter 7 Basic Semantics Programming Languages Third Edition Chapter 7 Basic Semantics Objectives Understand attributes, binding, and semantic functions Understand declarations, blocks, and scope Learn how to construct a symbol

More information

M301: Software Systems & their Development. Unit 4: Inheritance, Composition and Polymorphism

M301: Software Systems & their Development. Unit 4: Inheritance, Composition and Polymorphism Block 1: Introduction to Java Unit 4: Inheritance, Composition and Polymorphism Aims of the unit: Study and use the Java mechanisms that support reuse, in particular, inheritance and composition; Analyze

More information

0. Overview of this standard Design entities and configurations... 5

0. Overview of this standard Design entities and configurations... 5 Contents 0. Overview of this standard... 1 0.1 Intent and scope of this standard... 1 0.2 Structure and terminology of this standard... 1 0.2.1 Syntactic description... 2 0.2.2 Semantic description...

More information

Programming Languages Third Edition. Chapter 9 Control I Expressions and Statements

Programming Languages Third Edition. Chapter 9 Control I Expressions and Statements Programming Languages Third Edition Chapter 9 Control I Expressions and Statements Objectives Understand expressions Understand conditional statements and guards Understand loops and variation on WHILE

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 4 Thomas Wies New York University Review Last week Control Structures Selection Loops Adding Invariants Outline Subprograms Calling Sequences Parameter

More information

Problem with Scanning an Infix Expression

Problem with Scanning an Infix Expression Operator Notation Consider the infix expression (X Y) + (W U), with parentheses added to make the evaluation order perfectly obvious. This is an arithmetic expression written in standard form, called infix

More information

Informatica 3 Syntax and Semantics

Informatica 3 Syntax and Semantics Informatica 3 Syntax and Semantics Marcello Restelli 9/15/07 Laurea in Ingegneria Informatica Politecnico di Milano Introduction Introduction to the concepts of syntax and semantics Binding Variables Routines

More information

Applications of Formal Verification

Applications of Formal Verification Applications of Formal Verification Model Checking: Introduction to PROMELA Bernhard Beckert Mattias Ulbrich SS 2017 KIT INSTITUT FÜR THEORETISCHE INFORMATIK KIT University of the State of Baden-Württemberg

More information

Programmiersprachen (Programming Languages)

Programmiersprachen (Programming Languages) 2016-05-13 Preface Programmiersprachen (Programming Languages) coordinates: lecturer: web: usable for: requirements: No. 185.208, VU, 3 ECTS Franz Puntigam http://www.complang.tuwien.ac.at/franz/ps.html

More information

Applications of Formal Verification

Applications of Formal Verification Applications of Formal Verification Model Checking: Introduction to PROMELA Prof. Dr. Bernhard Beckert Dr. Vladimir Klebanov SS 2012 KIT INSTITUT FÜR THEORETISCHE INFORMATIK KIT University of the State

More information

Static Type Checking. Static Type Checking. The Type Checker. Type Annotations. Types Describe Possible Values

Static Type Checking. Static Type Checking. The Type Checker. Type Annotations. Types Describe Possible Values The Type Checker Compilation 2007 The type checker has several tasks: determine the types of all expressions check that values and variables are used correctly resolve certain ambiguities by transformations

More information

6. Operatoren. 7. Safe Programming: Assertions. Table of Operators. Table of Operators - Explanations. Tabular overview of all relevant operators

6. Operatoren. 7. Safe Programming: Assertions. Table of Operators. Table of Operators - Explanations. Tabular overview of all relevant operators 6. Operatoren Tabular overview of all relevant operators 180 Table of Operators Description Operator Arity Precedence Associativity Object member access. 2 16 left Array access [ ] 2 16 left Method invocation

More information

Concepts of Object-Oriented Programming Peter Müller

Concepts of Object-Oriented Programming Peter Müller Concepts of Object-Oriented Programming Peter Müller Chair of Programming Methodology Autumn Semester 2017 1.2 Introduction Core Concepts 2 Meeting the Requirements Cooperating Program Parts with Well-Defined

More information

A Short Introduction to First-Order Theorem Proving with KeY

A Short Introduction to First-Order Theorem Proving with KeY 1 What is KeY? 1.1 Software Verification Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter H. Schmitt Mattias Ulbrich A Short Introduction to First-Order Theorem

More information

Programming Paradigms

Programming Paradigms PP 2017/18 Unit 12 Functions and Data Types in Haskell 1/45 Programming Paradigms Unit 12 Functions and Data Types in Haskell J. Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE

More information

Agenda. Objects and classes Encapsulation and information hiding Documentation Packages

Agenda. Objects and classes Encapsulation and information hiding Documentation Packages Preliminaries II 1 Agenda Objects and classes Encapsulation and information hiding Documentation Packages Inheritance Polymorphism Implementation of inheritance in Java Abstract classes Interfaces Generics

More information

Formal Systems and their Applications

Formal Systems and their Applications Formal Systems and their Applications Dave Clarke (Dave.Clarke@cs.kuleuven.be) Acknowledgment: these slides are based in part on slides from Benjamin Pierce and Frank Piessens 1 Course Overview Introduction

More information

(Refer Slide Time: 4:00)

(Refer Slide Time: 4:00) Principles of Programming Languages Dr. S. Arun Kumar Department of Computer Science & Engineering Indian Institute of Technology, Delhi Lecture - 38 Meanings Let us look at abstracts namely functional

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 3 Thomas Wies New York University Review Last week Names and Bindings Lifetimes and Allocation Garbage Collection Scope Outline Control Flow Sequencing

More information

Fundamental Concepts and Definitions

Fundamental Concepts and Definitions Fundamental Concepts and Definitions Identifier / Symbol / Name These terms are synonymous: they refer to the name given to a programming component. Classes, variables, functions, and methods are the most

More information

CS558 Programming Languages Winter 2018 Lecture 4a. Andrew Tolmach Portland State University

CS558 Programming Languages Winter 2018 Lecture 4a. Andrew Tolmach Portland State University CS558 Programming Languages Winter 2018 Lecture 4a Andrew Tolmach Portland State University 1994-2018 Pragmatics of Large Values Real machines are very efficient at handling word-size chunks of data (e.g.

More information

Control Flow. COMS W1007 Introduction to Computer Science. Christopher Conway 3 June 2003

Control Flow. COMS W1007 Introduction to Computer Science. Christopher Conway 3 June 2003 Control Flow COMS W1007 Introduction to Computer Science Christopher Conway 3 June 2003 Overflow from Last Time: Why Types? Assembly code is typeless. You can take any 32 bits in memory, say this is an

More information

Problem with Scanning an Infix Expression

Problem with Scanning an Infix Expression Operator Notation Consider the infix expression (X Y) + (W U), with parentheses added to make the evaluation order perfectly obvious. This is an arithmetic expression written in standard form, called infix

More information

CSCE 314 Programming Languages. Type System

CSCE 314 Programming Languages. Type System CSCE 314 Programming Languages Type System Dr. Hyunyoung Lee 1 Names Names refer to different kinds of entities in programs, such as variables, functions, classes, templates, modules,.... Names can be

More information

DOWNLOAD PDF CORE JAVA APTITUDE QUESTIONS AND ANSWERS

DOWNLOAD PDF CORE JAVA APTITUDE QUESTIONS AND ANSWERS Chapter 1 : Chapter-wise Java Multiple Choice Questions and Answers Interview MCQs Java Programming questions and answers with explanation for interview, competitive examination and entrance test. Fully

More information

The Design of Core C++ (Notes)

The Design of Core C++ (Notes) The Design of Core C++ (Notes) Uday Reddy May 13, 1994 This note is to define a small formal language called Core C++ which reflects the essential structure of C++. As the name implies, the design only

More information

CMSC 330: Organization of Programming Languages

CMSC 330: Organization of Programming Languages CMSC 330: Organization of Programming Languages Type Systems, Names and Binding CMSC 330 - Spring 2013 1 Topics Covered Thus Far! Programming languages Ruby OCaml! Syntax specification Regular expressions

More information

Chapter 7 Control I Expressions and Statements

Chapter 7 Control I Expressions and Statements Chapter 7 Control I Expressions and Statements Expressions Conditional Statements and Guards Loops and Variation on WHILE The GOTO Controversy Exception Handling Values and Effects Important Concepts in

More information

Static Checking and Type Systems

Static Checking and Type Systems 1 Static Checking and Type Systems Chapter 6 COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University, 2007-2009 2 The Structure of our Compiler Revisited Character stream Lexical

More information

Advances in Programming Languages

Advances in Programming Languages O T Y H Advances in Programming Languages APL8: ESC/Java2 David Aspinall (including slides by Ian Stark and material adapted from ESC/Java2 tutorial by David Cok, Joe Kiniry and Erik Poll) School of Informatics

More information

Software Engineering

Software Engineering Software Engineering Lecture 12: Testing and Debugging Debugging Peter Thiemann University of Freiburg, Germany 13.06.2013 Today s Topic Last Lecture Bug tracking Program control Design for Debugging Input

More information

5. Semantic Analysis!

5. Semantic Analysis! 5. Semantic Analysis! Prof. O. Nierstrasz! Thanks to Jens Palsberg and Tony Hosking for their kind permission to reuse and adapt the CS132 and CS502 lecture notes.! http://www.cs.ucla.edu/~palsberg/! http://www.cs.purdue.edu/homes/hosking/!

More information

Reasoning About Imperative Programs. COS 441 Slides 10

Reasoning About Imperative Programs. COS 441 Slides 10 Reasoning About Imperative Programs COS 441 Slides 10 The last few weeks Agenda reasoning about functional programming It s very simple and very uniform: substitution of equal expressions for equal expressions

More information

Computer Science II (20082) Week 1: Review and Inheritance

Computer Science II (20082) Week 1: Review and Inheritance Computer Science II 4003-232-08 (20082) Week 1: Review and Inheritance Richard Zanibbi Rochester Institute of Technology Review of CS-I Syntax and Semantics of Formal (e.g. Programming) Languages Syntax

More information

Testing, Debugging, Program Verification

Testing, Debugging, Program Verification Testing, Debugging, Program Verification Debugging Programs, Part II Wolfgang Ahrendt & Vladimir Klebanov & Moa Johansson & Gabriele Paganelli 14 November 2012 TDV: Debugging II /GU 2011-11-09 1 / 32 Today

More information

Formal Methods for Software Development

Formal Methods for Software Development Formal Methods for Software Development Verification with Spin Wolfgang Ahrendt 07 September 2018 FMSD: Spin /GU 180907 1 / 34 Spin: Previous Lecture vs. This Lecture Previous lecture Spin appeared as

More information

3.4 Deduction and Evaluation: Tools Conditional-Equational Logic

3.4 Deduction and Evaluation: Tools Conditional-Equational Logic 3.4 Deduction and Evaluation: Tools 3.4.1 Conditional-Equational Logic The general definition of a formal specification from above was based on the existence of a precisely defined semantics for the syntax

More information

Applications of Formal Verification

Applications of Formal Verification Applications of Formal Verification Model Checking: Introduction to PROMELA Prof. Dr. Bernhard Beckert Dr. Vladimir Klebanov SS 2010 KIT INSTITUT FÜR THEORETISCHE INFORMATIK KIT University of the State

More information

Lambda Calculus. Variables and Functions. cs3723 1

Lambda Calculus. Variables and Functions. cs3723 1 Lambda Calculus Variables and Functions cs3723 1 Lambda Calculus Mathematical system for functions Computation with functions Captures essence of variable binding Function parameters and substitution Can

More information

Overview of the KeY System

Overview of the KeY System 22c181: Formal Methods in Software Engineering The University of Iowa Spring 2008 Overview of the KeY System Copyright 2007-8 Reiner Hähnle and Cesare Tinelli. Notes originally developed by Reiner Hähnle

More information

Concepts of Programming Languages

Concepts of Programming Languages Concepts of Programming Languages Lecture 10 - Object-Oriented Programming Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages

More information

Fortgeschrittene objektorientierte Programmierung (Advanced Object-Oriented Programming)

Fortgeschrittene objektorientierte Programmierung (Advanced Object-Oriented Programming) 2014-03-07 Preface Fortgeschrittene objektorientierte Programmierung (Advanced Object-Oriented Programming) Coordinates: Lecturer: Web: Studies: Requirements: No. 185.211, VU, 3 ECTS Franz Puntigam http://www.complang.tuwien.ac.at/franz/foop.html

More information

Abstract Object Creation in Dynamic Logic

Abstract Object Creation in Dynamic Logic to be or not to be created Wolfgang Ahrendt 1 Frank S. de Boer 2 Immo Grabe 3 1 Chalmers University, Göteborg, Sweden 2 CWI, Amsterdam, The Netherlands 3 Christian-Albrechts-University Kiel, Germany KeY

More information

Topics Covered Thus Far. CMSC 330: Organization of Programming Languages. Language Features Covered Thus Far. Programming Languages Revisited

Topics Covered Thus Far. CMSC 330: Organization of Programming Languages. Language Features Covered Thus Far. Programming Languages Revisited CMSC 330: Organization of Programming Languages Type Systems, Names & Binding Topics Covered Thus Far Programming languages Syntax specification Regular expressions Context free grammars Implementation

More information

Principles of Programming Languages

Principles of Programming Languages Principles of Programming Languages Lesson 14 Type Checking Collaboration and Management Dana Fisman www.cs.bgu.ac.il/~ppl172 1 Type Checking We return to the issue of type safety we discussed informally,

More information

Principles of Programming Languages

Principles of Programming Languages Principles of Programming Languages Lecture 08 Control Semantics & Continuations Semantics of Control Flow Sequencers: commands that cause control transfers:! goto! return! exit! break! continue! resultis

More information

Towards a GUI for Program Verification with KeY. Master of Science Thesis in the Programme Software Engineering and Technology

Towards a GUI for Program Verification with KeY. Master of Science Thesis in the Programme Software Engineering and Technology Towards a GUI for Program Verification with KeY Master of Science Thesis in the Programme Software Engineering and Technology Chalmers University of Technology University of Gothenburg Department of Computer

More information

CONVENTIONAL EXECUTABLE SEMANTICS. Grigore Rosu CS522 Programming Language Semantics

CONVENTIONAL EXECUTABLE SEMANTICS. Grigore Rosu CS522 Programming Language Semantics CONVENTIONAL EXECUTABLE SEMANTICS Grigore Rosu CS522 Programming Language Semantics Conventional Semantic Approaches A language designer should understand the existing design approaches, techniques and

More information

Type Hierarchy. Lecture 6: OOP, autumn 2003

Type Hierarchy. Lecture 6: OOP, autumn 2003 Type Hierarchy Lecture 6: OOP, autumn 2003 The idea Many types have common behavior => type families share common behavior organized into a hierarchy Most common on the top - supertypes Most specific at

More information