verified software components - school of computing...verification example: key points preview •...

137
Verified Software Components Murali Sitaraman (Clemson) Bruce W. Weide (Ohio State) RESOLVE/Reusable Software Research Group http://www.cs.clemson.edu/group/resolve http://cse.osu.edu/rsrg SPLASH 2013 Tutorial 1 We gratefully acknowledge NSF grants CCF-0811748, CCF-1161916, CCF-1162331, CNS-0745846, DUE-0942542, DUE-1022191, DUE-1022941, and DUE-1022191.

Upload: others

Post on 14-Mar-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Verified Software Components

Murali Sitaraman (Clemson) Bruce W. Weide (Ohio State)

RESOLVE/Reusable Software Research Group

http://www.cs.clemson.edu/group/resolve http://cse.osu.edu/rsrg

SPLASH 2013 Tutorial 1

We gratefully acknowledge NSF grants CCF-0811748, CCF-1161916, CCF-1162331, CNS-0745846, DUE-0942542, DUE-1022191,

DUE-1022941, and DUE-1022191.

Page 2: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Overview

•  Two 90-min sessions (separated by afternoon break): 1.  Formal Specification and “Push-Button”

Verification 2.  Proof of Correctness of Data Representation

SPLASH 2013 Tutorial 2

Page 3: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Overview

•  Two 90-min sessions (separated by afternoon break): 1.  Formal Specification and “Push-Button”

Verification 2.  Proof of Correctness of Data Representation

SPLASH 2013 Tutorial 3

Session 2 includes time for discussion of audience-suggested research and

education issues; so, think of some...

Page 4: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

1. Formal Specification and “Push-Button” Verification

•  Context: goals; verifying compilers – Activity

•  Describing behavior of software: mathematical modeling; design-by-contract – Activity

•  Iteration: loop invariants – Activity

SPLASH 2013 Tutorial 4

Page 5: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Goal and Approaches

SPLASH 2013 Tutorial 5

full!"

behavioral"properties"specified"

and "proved""

limited degree of"

automation""

limited!"

full!"

Ultimate goal: push-button

verification of (at least) functional

correctness."

Page 6: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Goal and Approaches

SPLASH 2013 Tutorial 6

full!"

behavioral"properties"specified"

and "proved""

limited degree of"

automation""

limited!"

full!"

One approach: lightweight tools

that can prove certain properties."

Page 7: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Goal and Approaches

SPLASH 2013 Tutorial 7

full!"

behavioral"properties"specified"

and "proved""

limited degree of"

automation""

limited!"

full!"

Abstract models of some properties of program behavior: ESC/Java, model-

checkers, ..."

Page 8: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Goal and Approaches

SPLASH 2013 Tutorial 8

full!"

behavioral"properties"specified"

and "proved""

limited degree of"

automation""

limited!"

full!"

Approach discussed here:

verifying compiler as in Tony Hoare’s grand challenge."

Page 9: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Goal and Approaches

SPLASH 2013 Tutorial 9

full!"

behavioral"properties"specified"

and "proved""

limited degree of"

automation""

limited!"

full!"

Abstract models of full program

behavior: Dafny, RESOLVE, ..."

Page 10: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Verifying Compiler Overview

SPLASH 2013 Tutorial 10

Program Specs and

Code

Math Definitions

and Theorems

Verification Condition Generator"

Automated Prover"

Page 11: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

"""

Verifying Compiler"

Verifying Compiler Overview

SPLASH 2013 Tutorial 11

Program Specs and

Code

Math Definitions

and Theorems

Verification Condition Generator"

Automated Prover"

Page 12: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Some FAQ Answers Up Front

•  Language? – Needs to support writing both formal

specifications and code for implementations

SPLASH 2013 Tutorial 12

Page 13: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Some FAQ Answers Up Front

•  Language? – Needs to support writing both formal

specifications and code for implementations

– Needs to support writing new mathematical developments (e.g., definitions for use in specification and results for use in verification)

SPLASH 2013 Tutorial 13

Page 14: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Some FAQ Answers Up Front

•  Language? – Needs to support writing both formal

specifications and code for implementations

– Needs to support writing new mathematical developments (e.g., definitions for use in specification and results for use in verification)

– Needs to have rich and clean semantics

SPLASH 2013 Tutorial 14

Page 15: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Some FAQ Answers Up Front

•  Language? – Needs to support writing both formal

specifications and code for implementations

– Needs to support writing new mathematical developments (e.g., definitions for use in specification and results for use in verification)

– Needs to have rich and clean semantics

SPLASH 2013 Tutorial 15

Claim: RESOLVE meets all these requirements."

Page 16: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Some FAQ Answers Up Front

•  Verification? – Needs to be sound

SPLASH 2013 Tutorial 16

Page 17: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Some FAQ Answers Up Front

•  Verification? – Needs to be sound – Needs to be modular (compositional,

component-wise) in order to be scalable to realistic programs

SPLASH 2013 Tutorial 17

Page 18: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Some FAQ Answers Up Front

•  Verification? – Needs to be sound – Needs to be modular (compositional,

component-wise) in order to be scalable to realistic programs

– Needs to demand minimal justifications of correctness from software developers

SPLASH 2013 Tutorial 18

Page 19: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Some FAQ Answers Up Front

•  Verification? – Needs to be sound – Needs to be modular (compositional,

component-wise) in order to be scalable to realistic programs

– Needs to demand minimal justifications of correctness from software developers

SPLASH 2013 Tutorial 19

Claim: RESOLVE meets all these requirements."

Page 20: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Activity: Key Points Preview

•  Code may involve user-defined types of the kind familiar in OO software

•  Recursion presents no serious problems •  Main ideas involved in formal specification

and verification are not particular to a given language

SPLASH 2013 Tutorial 20

Page 21: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Given Queue<T> in Java ...

•  void enqueue(T x) – Adds x to the rear of this

•  T dequeue() – Removes and returns the entry at the front of this

•  boolean isEmpty() – Reports whether this is empty

SPLASH 2013 Tutorial 21

Page 22: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

... Implement This Method

•  void invert() – Reverses the order of the entries in this

SPLASH 2013 Tutorial 22

Page 23: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

... Implement This Method

•  void invert() – Reverses the order of the entries in this

SPLASH 2013 Tutorial 23

Hint: Do it recursively.

Page 24: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Demo

http://resolve.cs.clemson.edu/research Components Concepts Globally_Bounded_Queue_Template Enhancements Inverting_Capability Realizations Recursive_Inverting_Realiz

SPLASH 2013 Tutorial 24

Page 25: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Tools: General Points

•  Sound •  Incomplete (for many reasons)

–  Inadequate justification –  Inadequate mathematical developments,

which are work in progress – Web IDE time out – Backend provers are efforts in progress –  Incompleteness in number theory

SPLASH 2013 Tutorial 25

Page 26: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Demo

http://resolve.cs.clemson.edu/research Components Concepts Globally_Bounded_Queue_Template Enhancements Inverting_Capability Realizations Recursive_Inverting_Realiz

SPLASH 2013 Tutorial 26

Specification of a generic Queue interface

Page 27: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Demo

http://resolve.cs.clemson.edu/research Components Concepts Globally_Bounded_Queue_Template Enhancements Inverting_Capability Realizations Recursive_Inverting_Realiz

SPLASH 2013 Tutorial 27

Specification of a Queue Invert operation

Page 28: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Demo

http://resolve.cs.clemson.edu/research Components Concepts Globally_Bounded_Queue_Template Enhancements Inverting_Capability Realizations Recursive_Inverting_Realiz

SPLASH 2013 Tutorial 28

Recursive implementation of Invert operation

Page 29: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Activity: Key Points Review

•  Code may involve user-defined types of the kind familiar in OO software

•  Recursion presents no serious problems •  Main ideas involved in formal specification

and verification are not particular to a given language

SPLASH 2013 Tutorial 29

Page 30: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Inadequate Specifications

•  Imprecise: enqueue enqueues item to the rear of the queue

•  Implementation-dependent: enqueue does the same thing as addElement on a vector

•  Metaphorical: enqueue has the same behavior as adding an item to the end of a line

SPLASH 2013 Tutorial 30

Page 31: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Formal Specifications

•  When we use variables of types such as int in programming, we think of their values as coming from mathematical domains such as Z (with constraints)

•  Similarly, we need a mathematical domain to conceptualize values of variables of types such as Queue

SPLASH 2013 Tutorial 31

Page 32: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Formal Specifications

•  When we use integer operations in programming (e.g., +), we understand them in terms of their math counterparts on Z

•  Similarly, we will use terms appropriate from the chosen math domain to specify Queue operations

SPLASH 2013 Tutorial 32

Page 33: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Queue Concept Specification

•  Parameterized by an Entry type •  Mathematical modeling: Conceptualize Queue values as mathematical strings of entries with appropriate computational constraints

•  Specifications of Queue operations use math string notations

SPLASH 2013 Tutorial 33

Page 34: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Queue Concept Specification

•  Parameterized by an Entry type •  Mathematical modeling: Conceptualize Queue values as mathematical strings of entries with appropriate computational constraints

•  Specifications of Queue operations use math string notations

SPLASH 2013 Tutorial 34

Other options: sets, multisets, functions, …"

Page 35: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Queue Concept Specification

•  Parameterized by an Entry type •  Mathematical modeling: Conceptualize Queue values as mathematical strings of entries with appropriate computational constraints

•  Specifications of Queue operations use math string notations

SPLASH 2013 Tutorial 35

a.k.a. “contract”"

Page 36: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

String Theory Notation

•  General idea: Σ* is strings over Σ – Str(Entry) is strings over Entry

•  Notations – Empty_String: Λ – Concatenation: α o β – String containing a single entry: <x> – Length: |α|

SPLASH 2013 Tutorial 36

Page 37: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Design-by-Contract

•  Articulated clearly in the 1980s (by Meyer) •  Design-by-contract has become the

standard policy governing “separation of concerns” across modern software engineering

•  Major difference for verification (as opposed to runtime assertion checking): mathematical modeling of program types

SPLASH 2013 Tutorial 37

Page 38: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Specification of Operations

•  Based on the mathematical model of a program type, such as Queue, each operation has: – A requires clause (precondition) that

characterizes the responsibility of the client code that calls that operation

– A ensures clause (postcondition) that characterizes the responsibility of the code that implements that operation

SPLASH 2013 Tutorial 38

Page 39: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Specification Example: Key Points Preview

•  This contract specification is generic (i.e., parameterized)

•  Mathematical model for a Queue is a string, and operations are specified using the notations of string theory

•  Parameters have specification modes •  Specifications are designed to avoid

(needless, inefficient) copying

SPLASH 2013 Tutorial 39

Page 40: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Specification Example

http://resolve.cs.clemson.edu/research Components Concepts Globally_Bounded_Queue_Template

SPLASH 2013 Tutorial 40

Page 41: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Specification Example: Key Points Review

•  This contract specification is generic (i.e., parameterized)

•  Mathematical model for a Queue is a string and operations are specified using the notations of string theory

•  Parameters have specification modes •  Specifications are designed to avoid

(needless, inefficient) copying

SPLASH 2013 Tutorial 41

Page 42: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Connections to Verification

•  From specification to verification: – A requires clause (precondition) that

characterizes the responsibility of the client code that calls that operation

– A ensures clause (postcondition) that characterizes the responsibility of the code that implements that operation

SPLASH 2013 Tutorial 42

Page 43: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Connections to Verification

•  From specification to verification: – A requires clause (precondition) that

characterizes the responsibility of the client code that calls that operation

– A ensures clause (postcondition) that characterizes the responsibility of the code that implements that operation

SPLASH 2013 Tutorial 43

This responsibility results in generating verification conditions (VCs) for each call in client code."

Page 44: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Connections to Verification

•  From specification to verification: – A requires clause (precondition) that

characterizes the responsibility of the client code that calls that operation

– A ensures clause (postcondition) that characterizes the responsibility of the code that implements that operation

SPLASH 2013 Tutorial 44

This responsibility results in generating VCs at the end of the

code that implements an operation."

Page 45: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Verification Example: Key Points Preview

•  Verification requires an integrated specification + implementation language

•  Verification is modular (e.g., uses only specifications of called operations)

•  Verification conditions (VCs) are raised not only for the end results, but also to make sure that intervening calls are legit

SPLASH 2013 Tutorial 45

Page 46: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Verification Example

http://resolve.cs.clemson.edu/research Components Concepts Globally_Bounded_Queue_Template Enhancements Inverting_Capability Realizations Recursive_Inverting_Realiz

SPLASH 2013 Tutorial 46

Page 47: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Verification Example: Key Points Review

•  Verification requires an integrated specification + implementation language

•  Verification is modular (e.g., uses only specifications of called operations)

•  Verification conditions (VCs) are raised not only for the end results, but also to make sure that intervening calls are legit

SPLASH 2013 Tutorial 47

Page 48: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Activity: Key Points Preview

•  Even apparently simple code that’s “just about ints” can be subtle enough to benefit from automated verification

•  Main ideas involved in formal specification and verification are not particular to a given language, e.g., RESOLVE

SPLASH 2013 Tutorial 48

Page 49: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Clock Arithmetic

•  The value of a mod b, or a modulo b, where a and b are mathematical integers and b > 0, is computed by doing clock arithmetic on a clock face with b positions labelled 0 through b–1

SPLASH 2013 Tutorial 49

Page 50: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Clock Arithmetic

•  The value of a mod b, or a modulo b, where a and b are mathematical integers and b > 0, is computed by doing clock arithmetic on a clock face with b positions labelled 0 through b–1 –  If a > 0, the “hand” on the clock starts at 0

and moves |a| positions clockwise – Where it ends up is the value of a mod b

SPLASH 2013 Tutorial 50

Page 51: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Clock Arithmetic

•  The value of a mod b, or a modulo b, where a and b are mathematical integers and b > 0, is computed by doing clock arithmetic on a clock face with b positions labelled 0 through b–1 –  If a > 0, the “hand” on the clock starts at 0

and moves |a| positions clockwise –  If a < 0, it moves |a| counter-clockwise – Where it ends up is the value of a mod b

SPLASH 2013 Tutorial 51

Page 52: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Example: 24-hr Clock

SPLASH 2013 Tutorial 52

Page 53: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Mod ≠ Remainder •  What is the remainder upon dividing 67

by 24?

SPLASH 2013 Tutorial 53

Page 54: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Mod ≠ Remainder •  What is the remainder upon dividing 67

by 24? It is 19. •  What is the remainder upon dividing –67

by 24?

SPLASH 2013 Tutorial 54

Page 55: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Mod ≠ Remainder •  What is the remainder upon dividing 67

by 24? It is 19. •  What is the remainder upon dividing –67

by 24? It is –19. – At least most people (and Java) say it is...

•  What is (–67) mod 24?

SPLASH 2013 Tutorial 55

Page 56: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Mod ≠ Remainder •  What is the remainder upon dividing 67

by 24? It is 19. •  What is the remainder upon dividing –67

by 24? It is –19. – At least most people (and Java) say it is...

•  What is (–67) mod 24? It is 5.

SPLASH 2013 Tutorial 56

Page 57: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Given ...

SPLASH 2013 Tutorial 57

•  The % operator in Java (which, despite sometimes being called the “mod” operator, actually computes the remainder of integer division), e.g.: 67 % 24 evaluates to 19 –67 % 24 evaluates to –19

Page 58: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

... Implement This Method

•  int clockMod(int a, int b) •  Contract specification:

requires b > 0 ensures clockMod = a mod b

SPLASH 2013 Tutorial 58

Page 59: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

... Implement This Method

•  int clockMod(int a, int b) •  Contract specification:

requires b > 0 ensures clockMod = a mod b

SPLASH 2013 Tutorial 59

You can do it in one concise line of Java code..."

Page 60: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Demo

http://resolveonline.cse.ohio-state.edu IntegerFacility ClockMod

SPLASH 2013 Tutorial 60

Page 61: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Activity: Key Points Review

•  Even apparently simple code that’s “just about ints” can be subtle enough to benefit from automated verification

•  Main ideas involved in formal specification and verification are not particular to a given language, e.g., RESOLVE

SPLASH 2013 Tutorial 61

Page 62: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Iteration and Loop Invariants

•  Developer must sometimes write a justification of correctness of code – Assertion that the developer claims to be true

and that will be checked to be true by the verifier (for soundness)

– Proving and using such an assertion is easier for a mechanical verifier than inventing it

– Writing it requires education and experience •  A loop invariant is one kind of justification SPLASH 2013 Tutorial 62

Page 63: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

What Is a Loop Invariant? •  For a typical while loop, an assertion that

is true at the beginning and at the end of each iteration, including the first and the last

•  More generally: an invariant is a property that is true every time execution reaches a certain point—in the case of a loop invariant, the loop condition test

29 October 2013 63

Page 64: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

While Statement Control Flow

B false

true

body

Code; While B maintaining Inv; do body;

end; Confirm Q;

29 October 2013 64

Confirm Q

code

Page 65: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Checking the Invariant: Part 1

Code; While B maintaining Inv; do body;

end; Confirm Q;

29 October 2013 65

code Confirm Inv

Page 66: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Checking the Invariant: Part II

B

true

body

Code; While B maintaining Inv; do body;

end; Confirm Q;

29 October 2013 66

Assume Inv

Confirm Inv

Page 67: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Inductive Proof of the Invariant

B false

true

body

Code; While B maintaining Inv; do body;

end; Confirm Q;

29 October 2013 67

code Base Case VC: Confirm Inv

Inductive Assumption: Assume Inv

Inductive Case VC: Confirm Inv

Page 68: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Using the Invariant

B false

true

body

Code; While B maintaining Inv; do body;

end; Confirm Q;

29 October 2013 68

Confirm Q

code

Assume Inv

Page 69: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Identifying a Suitable Invariant •  Pick an assertion such that the assertion

and the negation of loop condition together imply the assertion to be confirmed after the loop (i.e., not B and Inv ⇒ Q)

•  Make sure the assertion is indeed an invariant (see checking the invariant, parts I and II)!

29 October 2013 69

Page 70: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Loop Invariant Example

http://resolve.cs.clemson.edu/research Components Concepts Globally_Bounded_Stack_Template Enhancements Flipping_Capability Realizations Obvious_Flipping_Realiz

SPLASH 2013 Tutorial 70

Page 71: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Identifying a Suitable Invariant •  Need to confirm (or prove) the ensures

clause of Flip at the end of the code: S = Reverse(#S)

•  Need to confirm the following before the swap statement ( S :=: Temp; ) Temp = Reverse(#S)

•  Identify an invariant, Inv: S = Empty_String and Inv ⇒

Temp = Reverse(#S) 29 October 2013 71

Page 72: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Observing the Loop in Action

SPLASH 2013 Tutorial 72

After Iteration

Number... S = Temp =

0 < 10, 20, 30, 40 > < >

1

Page 73: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Observing the Loop in Action

SPLASH 2013 Tutorial 73

After Iteration

Number... S = Temp =

0 < 10, 20, 30, 40 > < >

1 < 20, 30, 40 > < 10 >

2

Page 74: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Observing the Loop in Action

SPLASH 2013 Tutorial 74

After Iteration

Number... S = Temp =

0 < 10, 20, 30, 40 > < >

1 < 20, 30, 40 > < 10 >

2 < 30, 40 > < 20, 10 >

3

Page 75: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Observing the Loop in Action

SPLASH 2013 Tutorial 75

After Iteration

Number... S = Temp =

0 < 10, 20, 30, 40 > < >

1 < 20, 30, 40 > < 10 >

2 < 30, 40 > < 20, 10 >

3 < 40 > < 30, 20, 10 >

4

Page 76: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Observing the Loop in Action

SPLASH 2013 Tutorial 76

After Iteration

Number... S = Temp =

0 < 10, 20, 30, 40 > < >

1 < 20, 30, 40 > < 10 >

2 < 30, 40 > < 20, 10 >

3 < 40 > < 30, 20, 10 >

4 < > < 40, 30, 20, 10 >

Page 77: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

What Doesn’t Change?

•  Claim: the concatenation of the reverse of Temp, with S, is always the same: it is equal to the value of S before the first iteration

•  Loop invariant (goal driven): Reverse(S)° Temp = Reverse(#S)

•  Alternative loop invariant (fact driven): #S = Reverse(Temp) ° S

SPLASH 2013 Tutorial 77

Page 78: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Progress Metric for Termination

•  Progress metric is a natural number (an ordinal, in general) that is decreasing

•  Programmer specifies a progress metric for loop termination and the verifier checks its validity and uses it in its proof

•  Suitable progress metric for example: decreasing |S|;

•  Unsuitable one: decreasing |Temp|;

SPLASH 2013 Tutorial 78

Page 79: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Activity: Key Points Preview

•  Ideas are language-independent •  Programmer supplies an adequate

invariant and progress metric for termination to justify loop correctness

•  Verifier checks the validity of the above (otherwise it won’t be sound)

•  Verifier uses them to complete its proof of code correctness

SPLASH 2013 Tutorial 79

Page 80: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Given…

http://resolve.cs.clemson.edu/research Components Concepts Globally_Bounded_Queue_Template Enhancements Inverting_Capability Realizations Invariantless_Iterative_Realiz

SPLASH 2013 Tutorial 80

Page 81: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

... Do This

•  Write invariants for loops – Write the invariant for the second loop first

SPLASH 2013 Tutorial 81

Page 82: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Activity: Key Points Review

•  Invariants may involve mathematical models of multiple objects – Stacks and queues just happen to have the

same string model •  No deep thinking is necessary to complete

the proofs given the invariant

SPLASH 2013 Tutorial 82

Page 83: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Another One?

http://resolve.cs.clemson.edu/research Components Concepts Globally_Bounded_Queue_Template Enhancements Remove_Last_Capability Realizations Invariantless_Remove_Last_Realiz

SPLASH 2013 Tutorial 83

Page 84: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Survey Questions

•  Please briefly and anonymously answer the following questions on a sheet of paper and turn them in at the front table: 1.  Which part of the first session did you find

most interesting and/or helpful? If you have time: why?

2.  Which part of the first session did you find least interesting and/or helpful? If you have time: why?

SPLASH 2013 Tutorial 84

Page 85: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

2. Proof of Correctness of Data Representation

•  Correctness of data representation: representation invariants and abstraction relations – Philosophical discussion – Mathematical framework for thinking about it – Activity

1 SPLASH 2013 Tutorial

Page 86: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

So, What’s Inside the Computer?

•  Consider any popular video game, e.g., Nintendo Wii bowling

•  Are there bowling balls and bowling pins inside the game console’s computer?

2 SPLASH 2013 Tutorial

Page 87: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

So, What’s Inside the Computer?

•  Consider any popular video game, e.g., Nintendo Wii bowling

•  Are there bowling balls and bowling pins inside the game console’s computer? – Of course not!

•  What’s really inside the computer, then, that makes bowling-like behavior?

3 SPLASH 2013 Tutorial

Page 88: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

So, What’s Inside the Computer?

•  Consider any popular video game, e.g., Nintendo Wii bowling

•  Are there bowling balls and bowling pins inside the game console computer? – Of course not!

•  What’s really inside the computer, then, that makes bowling-like behavior?

4

A thought experiment: What dynamic behavior

would you see if you had a magical magnifying glass and could see inside the computer at any level of detail while it’s running?

SPLASH 2013 Tutorial

Page 89: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

A Possible Metaphor

5 SPLASH 2013 Tutorial

Page 90: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

A Tower of Abstractions

•  Bowling pins? •  Vectors? •  Numbers? •  Bits? •  Voltages? •  Electrons? •  ???

6 SPLASH 2013 Tutorial

Page 91: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

A Tower of Abstractions

•  Bowling pins? •  Vectors? •  Numbers? •  Bits? •  Voltages? •  Electrons? •  ???

7

These are all “just” mathematical models, i.e.,

abstractions used to explain and predict observable behavior.

SPLASH 2013 Tutorial

Page 92: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

A Tower of Abstractions

•  Bowling pins? •  Vectors? •  Numbers? •  Bits? •  Voltages? •  Electrons? •  ???

8

Domain: Physics These models are supposed to match physical reality, and are discarded if they do not; limited by the physical world.

SPLASH 2013 Tutorial

Page 93: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

A Tower of Abstractions

•  Bowling pins? •  Vectors? •  Numbers? •  Bits? •  Voltages? •  Electrons? •  ???

9

Domain: Computing These models are entirely artificial (need not match

physical reality); limited only by the creativity of the

software engineer.

SPLASH 2013 Tutorial

Page 94: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

A Tower of Abstractions

•  Bowling pins •  Vectors •  Numbers •  Bits •  Voltages •  Electrons •  ???

10 SPLASH 2013 Tutorial

Page 95: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

A Tower of Abstractions

•  Bowling pins •  Vectors •  Numbers •  Bits •  Voltages •  Electrons •  ???

11

Numbers may be built on top of bits…

SPLASH 2013 Tutorial

Page 96: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

A Tower of Abstractions

•  Bowling pins •  Vectors •  Numbers •  Bits •  Voltages •  Electrons •  ???

12

Bits may be built on top of voltages…

SPLASH 2013 Tutorial

Page 97: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

A Tower of Abstractions

•  Bowling pins •  Vectors •  Numbers •  Bits •  Voltages •  Electrons •  ???

13

Voltages may be built on top of (?) electrons…

SPLASH 2013 Tutorial

Page 98: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Interpretation of Representation

•  Let’s not take the tower-building metaphor too far!

•  A better approach is to think about interpreting a lower-level configuration (a.k.a. a representation) to get a higher-level value

14 SPLASH 2013 Tutorial

Page 99: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

A Tower of Abstractions

•  Bowling pins •  Vectors •  Numbers •  Bits •  Voltages •  Electrons •  ???

15

(Configurations of) bits may be interpreted

as numbers...

SPLASH 2013 Tutorial

Page 100: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

A Tower of Abstractions

•  Bowling pins •  Vectors •  Numbers •  Bits •  Voltages •  Electrons •  ???

16

(Configurations of) voltages may be

interpreted as bits…

SPLASH 2013 Tutorial

Page 101: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

A Tower of Abstractions

•  Bowling pins •  Vectors •  Numbers •  Bits •  Voltages •  Electrons •  ???

17

(Configurations of) electrons may be

interpreted as voltages…

SPLASH 2013 Tutorial

Page 102: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Example

http://resolveonline.cse.ohio-state.edu SetTemplate QueueRealization

18 SPLASH 2013 Tutorial

Page 103: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Two-Level Thinking

19

client view: mathematical model for type,

contracts for operations

implementer view: data representation for type,

algorithms for operations

SPLASH 2013 Tutorial

Page 104: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Two-Level Thinking

SPLASH 2013 Tutorial 20

This is the abstract state space: the set of all possible math model values as

seen by a client.

Page 105: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Two-Level Thinking

SPLASH 2013 Tutorial 21

This is the concrete state space: the set of all possible math model values of

the data representation.

Page 106: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Two-Level Thinking

SPLASH 2013 Tutorial 22

This is the interpretation of each concrete value (below) as an abstract value

(above).

Page 107: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

The Commutative Diagram

SPLASH 2013 Tutorial 23

before an operation call after an operation call

Page 108: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

The Commutative Diagram

SPLASH 2013 Tutorial 24

This is the specified behavior of the operation

call (based on its contract).

Page 109: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

The Commutative Diagram

SPLASH 2013 Tutorial 25

This is the actual behavior of the operation call (based on its code).

Page 110: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

What’s Left to Write Down?

SPLASH 2013 Tutorial 26

Page 111: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

What’s Left to Write Down?

SPLASH 2013 Tutorial 27

The developer must describe the concrete state space, i.e., the legitimate values of the data

representation: the representation invariant.

Page 112: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

What’s Left to Write Down?

SPLASH 2013 Tutorial 28

The developer must describe the interpretation for the

legitimate values of the data representation: the

abstraction function.

Page 113: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Justifications of Correctness

•  Two key design decisions justify the correctness of a data representation: – The representation invariant: Which

“configurations” of the data representation can ever arise, i.e., are considered legitimate?

– The abstraction function: How is a legitimate data representation to be interpreted to get an abstract value?

SPLASH 2013 Tutorial 29

Page 114: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Consequences

•  With the representation invariant and abstraction function supplied by the software developer: – The code for each operation can be written

independently of the others, and the operations will “play well together”

– The code for each operation can be verified independently of the others

SPLASH 2013 Tutorial 30

Page 115: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Activity: Key Points Preview

•  Each operation body, and its proof of correctness, can be done independently of all the others

•  No pointers or references or nodes or links are involved in this representation of QueueTemplate because ListTemplate hides them

31 SPLASH 2013 Tutorial

Page 116: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Activity

•  Representing a Queue using a List

32 SPLASH 2013 Tutorial

Page 117: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Demo

http://resolveonline.cse.ohio-state.edu ListTemplate

SPLASH 2013 Tutorial 33

Page 118: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

The Type List math subtype LIST_MODEL is (left: string of Item, right: string of Item)

type List is modeled by LIST_MODEL exemplar l initialization ensures l.left = empty_string and l.right = empty_string

SPLASH 2013 Tutorial 34

Page 119: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

How To Think About It

•  An initial List value:

(< >, < >) •  A typical List value:

(< , >, < , , >)

SPLASH 2013 Tutorial 35

Page 120: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Insert

s =

x =

Insert(s, x)

s =

x =

SPLASH 2013 Tutorial 36

Page 121: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Remove

s =

x =

Remove(s, x)

s =

x =

SPLASH 2013 Tutorial 37

Page 122: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Advance

s =

Advance(s)

s =

SPLASH 2013 Tutorial 38

Page 123: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Reset

s =

Reset(s)

s =

SPLASH 2013 Tutorial 39

Page 124: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

AdvanceToEnd

s =

AdvanceToEnd(s)

s =

SPLASH 2013 Tutorial 40

Page 125: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Activity and Demo

http://resolveonline.cse.ohio-state.edu QueueTemplate ListRealization

SPLASH 2013 Tutorial 41

Page 126: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Activity: Key Points Review

•  Each operation body, and its proof of correctness, can be done independently of all the others

•  No pointers or references or nodes or links are involved in this representation of QueueTemplate because ListTemplate hides them

42 SPLASH 2013 Tutorial

Page 127: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Discussion of Research and Education Issues

•  Your suggestions?

SPLASH 2013 Tutorial 43

Page 128: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Overview of Foundations and Tools

•  Sitaraman, M., et al., “Building a Push-Button RESOLVE Verifier: Progress and Challenges”, Formal Aspects of Computing 23, 5 (2011), 607-626.

SPLASH 2013 Tutorial 44

Page 129: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Empirical Studies

•  Kirschenbaum, J., et al. “Verifying Component-Based Software: Deep Mathematics or Simple Bookkeeping?”, Proceedings 11th International Conference on Software Reuse, Springer LNCS 5791, 2009, 31-40.

•  Tagore, A., et al., “Automatically Proving Thousands of Verification Conditions Using an SMT Solver: An Empirical Study”, NASA Formal Methods 4th International Symposium, Springer LNCS 7226, 2012, 195-209.

SPLASH 2013 Tutorial 45

Page 130: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

VC Generators and Provers

•  Harton, H. K., Mechanical and Modular Verification Condition Generation For Object-Based Software, Ph.D. Dissertation, Clemson University, 2011.

•  Smith, H., Engineering Specifications and Mathematics for Verified Software, Ph.D. Dissertation, Clemson University, 2013.

SPLASH 2013 Tutorial 46

Page 131: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Benchmarks

•  Weide, B.W., et al., “Incremental Benchmarks for Software Verification Tools and Techniques”, Proceedings Verified Software: Theories, Tools, and Experiments 2008, Springer LNCS 5295, 2008, 84-98.

•  Klebanov, V., et al., “The 1st Verified Software Competition: Experience Report”, Proceedings 17th International Symposium on Formal Methods, Springer LNCS 6664, 2011, 154-168.

SPLASH 2013 Tutorial 47

Page 132: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Challenge Problems

•  Weide, B.W., “SAVCBS 2006 Challenge: Specification of Iterators”, Proceedings 2006 Conference on Specification and Verification of Component-Based Systems, ACM, 2006, 75-77.

•  Bronish, D., and Smith, H., “Robust, Generic, Modularly-Verified Map: A Software Verification Challenge Problem”, Proceedings PLPV ’11: 5th ACM Workshop on Programming Languages Meets Program Verification, 2011, 27-30.

SPLASH 2013 Tutorial 48

Page 133: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

References and Linked Structures

•  Weide, B.W., and Heym, W.D., “Specification and Verification with References”, Procs. OOPSLA Workshop on SAVCBS, 2001.

•  Kulczycki, G., Direct Reasoning, Ph.D. Dissertation, Clemson University, 2004.

•  Kulczycki, G., et al., “The Location Linking Concept: A Basis for Verification of Code Using Pointers,” Procs. VSTTE, 2012, 34-49.

SPLASH 2013 Tutorial 49

Page 134: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Performance Specification and Verification

•  Weide, B.W., et al., “Expressiveness Issues in Compositional Performance Reasoning”, Proceedings 6th ICSE Workshop on Component-Based Software Engineering: Automated Reasoning and Prediction, 2003, 85-90.

•  Krone J., et al., “Performance Analysis Based Upon Complete Profiles”, Proceedings 2006 Conference on Specification and Verification of Component-Based Systems, ACM, 2006, 3-10.

SPLASH 2013 Tutorial 50

Page 135: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

CS Education

•  Numerous papers at educational conferences over the past 20 years including ACM SIGCSE, ACM ITiCSE, and CSEET

•  Drachova-Strang S., Teaching and Assessment of Mathematical Principles for Software Correctness Using a Reasoning Concept Inventory, Ph.D. Dissertation, Clemson University, 2013.

SPLASH 2013 Tutorial 51

Page 136: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

Survey Questions

•  Please briefly and anonymously answer the following questions on a sheet of paper and turn them in at the front table: 1.  Which part of the second session did you

find most interesting and/or helpful? If you have time: why?

2.  Which part of the second session did you find least interesting and/or helpful? If you have time: why?

SPLASH 2013 Tutorial 52

Page 137: Verified Software Components - School of Computing...Verification Example: Key Points Preview • Verification requires an integrated specification + implementation language • Verification

For More Information...

•  http://www.cs.clemson.edu/group/resolve •  [email protected]

•  http://cse.osu.edu/rsrg •  [email protected]

SPLASH 2013 Tutorial 53