1 MSR/Cambridge Formal Verification Overview Byron Cook Microsoft Research, Cambridge.

Slides:



Advertisements
Similar presentations
1 Verification by Model Checking. 2 Part 1 : Motivation.
Advertisements

Automated Theorem Proving Lecture 1. Program verification is undecidable! Given program P and specification S, does P satisfy S?
Auto-Generation of Test Cases for Infinite States Reactive Systems Based on Symbolic Execution and Formula Rewriting Donghuo Chen School of Computer Science.
An Abstract Interpretation Framework for Refactoring P. Cousot, NYU, ENS, CNRS, INRIA R. Cousot, ENS, CNRS, INRIA F. Logozzo, M. Barnett, Microsoft Research.
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: A A A AAA A A A AA A Proving that non-blocking algorithms don't block.
Introducing Formal Methods, Module 1, Version 1.1, Oct., Formal Specification and Analytical Verification L 5.
1 MDV, April 2010 Some Modeling Challenges when Testing Rich Internet Applications for Security Kamara Benjamin, Gregor v. Bochmann Guy-Vincent Jourdan,
1 Thorough Static Analysis of Device Drivers Byron Cook – Microsoft Research Joint work with: Tom Ball, Vladimir Levin, Jakob Lichtenberg,
Process Analysis Toolkit PAT is A SPIN-like self-contained environment for system specification, visualized simulation and automated verification. PAT.
AndroidCompiler. Layout Motivation Literature Review AndroidCompiler Future Works.
CSEP590 – Model Checking and Software Verification University of Washington Department of Computer Science and Engineering Summer 2003.
Termination Proofs for Systems Code Andrey Rybalchenko, EPFL/MPI joint work with Byron Cook, MSR and Andreas Podelski, MPI PLDI’2006, Ottawa.
CS 290C: Formal Models for Web Software Lecture 10: Language Based Modeling and Analysis of Navigation Errors Instructor: Tevfik Bultan.
Model Checking. Used in studying behaviors of reactive systems Typically involves three steps: Create a finite state model (FSM) of the system design.
Concurrency CS 510: Programming Languages David Walker.
Temporal Logic of Actions (TLA) Leslie Lamport
Run-Time Storage Organization
Chair of Software Engineering Concurrent Object-Oriented Programming Prof. Dr. Bertrand Meyer Exercise Session 2: Introduction.
Software Reliability Methods Sorin Lerner. Software reliability methods: issues What are the issues?
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 18 Program Correctness To treat programming.
Application of Formal Verification Methods to the analysis of Bearings-only Ballistic Missile Interception Algorithms Eli Bendersky Michael Butvinnik Supervisor:
Methods For The Prevention, Detection And Removal Of Software Security Vulnerabilities Jay-Evan J. Tevis Department of Computer Science and Software Engineering.
Formal Verification of SpecC Programs using Predicate Abstraction Himanshu Jain Daniel Kroening Edmund Clarke Carnegie Mellon University.
Model Checking for Embedded Systems Edmund Clarke, CMU High-Confidence Embedded Systems Workshop, May 1 st.
Cheng/Dillon-Software Engineering: Formal Methods Model Checking.
1 Hardware synthesis 2.0 Byron Cook and Satnam Singh with Ashutosh Gupta, Stephen Magill, Andrey Rybalchenko, Jiri Simsa, and Viktor Vafeiadis TexPoint.
Crowfoot: a verifier for higher order store programs Billiejoe (Nathaniel) Charlton Ben Horsfall Bernhard Reus University of Sussex VMCAI 2012.
Linear and Branching Time Safety, Liveness, and Fairness
Presentation of Singularity OS Seminar, winter 2005 by Jacob Munk-Stander November 23 rd, 2005.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
1 Program Correctness CIS 375 Bruce R. Maxim UM-Dearborn.
1 Employing decision procedures for automatic analysis and verification of heap-manipulating programs Greta Yorsh under the supervision of Mooly Sagiv.
Proof Carrying Code Zhiwei Lin. Outline Proof-Carrying Code The Design and Implementation of a Certifying Compiler A Proof – Carrying Code Architecture.
CSC-682 Cryptography & Computer Security Sound and Precise Analysis of Web Applications for Injection Vulnerabilities Pompi Rotaru Based on an article.
Yang Liu, Jun Sun and Jin Song Dong School of Computing National University of Singapore.
Framework for the Development and Testing of Dependable and Safety-Critical Systems IKTA 065/ Supported by the Information and Communication.
Specifying and Verifying Event-based Fairness Enhanced Systems 1 ICFEM 2008 Specifying and Verifying Event-based Fairness Enhanced Systems Jun SUN, Yang.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
CIS 540 Principles of Embedded Computation Spring Instructor: Rajeev Alur
Variance Analyses from Invariance Analyses Josh Berdine Microsoft Research, Cambridge Joint work with Aziem Chawdhary, Byron Cook, Dino.
1 Qualitative Reasoning of Distributed Object Design Nima Kaveh & Wolfgang Emmerich Software Systems Engineering Dept. Computer Science University College.
Writing Systems Software in a Functional Language An Experience Report Iavor Diatchki, Thomas Hallgren, Mark Jones, Rebekah Leslie, Andrew Tolmach.
Software Debugging, Testing, and Verification Presented by Chris Hundersmarck November 10, 2004 Dr. Bi’s SE516.
Convergence of Model Checking & Program Analysis Philippe Giabbanelli CMPT 894 – Spring 2008.
Lecture 5 1 CSP tools for verification of Sec Prot Overview of the lecture The Casper interface Refinement checking and FDR Model checking Theorem proving.
Beyond Reachability: Shape Abstraction in the presence of Pointer Arithmetic Hongseok Yang (Queen Mary, University of London) (Joint work with Dino Distefano,
CSCI1600: Embedded and Real Time Software Lecture 28: Verification I Steven Reiss, Fall 2015.
Properties Incompleteness Evaluation by Functional Verification IEEE TRANSACTIONS ON COMPUTERS, VOL. 56, NO. 4, APRIL
1 Temporal logic. 2 Prop. logic: model and reason about static situations. Example: Are there truth values that can be assigned to x,y simultaneously.
Formal Methods in Software Engineering1 Today’s Agenda  Mailing list  Syllabus  Introduction.
Chapter 1 Java Programming Review. Introduction Java is platform-independent, meaning that you can write a program once and run it anywhere. Java programs.
1 Proving program termination Lecture 5 · February 4 th, 2008 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: A.
Ranjit Jhala Rupak Majumdar Interprocedural Analysis of Asynchronous Programs.
Automated Formal Verification of PLC (Programmable Logic Controller) Programs
Adaptive Shape Analysis Thomas Wies joint work with Josh Berdine Cristiano Calcagno TexPoint fonts used in EMF. Read the TexPoint manual before you delete.
Today’s Agenda  Quiz 4  Temporal Logic Formal Methods in Software Engineering1.
CS223: Software Engineering Lecture 21: Unit Testing Metric.
Interface specifications At the core of each Larch interface language is a model of the state manipulated by the associated programming language. Each.
Stuff to memorise… "A method tells an object to perform an action. A property allows us to read or change the settings of the object."
The Post Windows Operating System
Tutorial: Proving termination and liveness
Matching Logic An Alternative to Hoare/Floyd Logic
(One-Path) Reachability Logic
State your reasons or how to keep proofs while optimizing code
Programming Languages 2nd edition Tucker and Noonan
Language-based Security
Programming Languages 2nd edition Tucker and Noonan
An overview of Coq.
Data Structures & Programming
Presentation transcript:

1 MSR/Cambridge Formal Verification Overview Byron Cook Microsoft Research, Cambridge

2 Cambridge:  Long standing tradition of areas of formal methods research MSR-Cambridge  Strong background in programming languages research  Recent strength in formal verification Queen Mary, University of London  Separation logic is frequent subject of interest  Much interaction between Queen Mary and Cambridge area researchers Great deal of joint research in recent years  Continuum between academic and industrial research  Frequent cross-organization exchange and discussion  Cross-organization supervision MSR/Cambridge/London

3 Cambridge: long standing tradition of formal verification research MSR-Cambridge  Strong background in programming languages research  Recent strength in formal verification Queen Mary, University of London  Separation logic is frequent subject of interest  Much interaction between Queen Mary and Cambridge area researchers Continuum between academic and industrial research  Frequent cross-organization exchange and discussion  Cross-organization supervision MSR/Cambridge/London

4

5 Cambridge: long standing tradition of formal verification research MSR-Cambridge  Strong background in programming languages research  Recent strength in formal verification Queen Mary, University of London  Separation logic is frequent subject of interest  Much interaction between Queen Mary and Cambridge area researchers Continuum between academic and industrial research  Frequent cross-organization exchange and discussion  Cross-organization supervision MSR/Cambridge/London

6 Projects: Semi-automatic methods of proving correctness of (fine-grained) concurrent programs with data Automatic methods of proving correctness of (course-grained) concurrent programs Automatic methods of proving termination/liveness Shape analysis Security analysis ARM research MSR/Cambridge

7 Projects: Semi-automatic methods of proving correctness of (fine-grained) concurrent programs with data Automatic methods of proving correctness of (course-grained) concurrent programs Automatic methods of proving termination/liveness Shape analysis Security analysis ARM research MSR/Cambridge

8

9 Termination analysis research Byron Cook Microsoft Research, Cambridge

10 Introduction Reactive systems: Operating systems Medical systems Web servers & clients servers & clients etc...

11 Introduction Reactive systems: Operating systems Medical systems Web servers & clients servers & clients etc...

12 Introduction

13 Introduction

14 Introduction

15 Introduction

16 Introduction

17 Introduction

18

19

20

21

22

23

24

25

26

27 All known program proof/analysis tools support ONLY safety properties: Safety properties ensure that “nothing bad happens” Safety properties are guaranteed to have finite counterexamples: If the code calls KeLeaveCriticalRegion then it has (in some time in the past) it called KeEnterCriticalRegion Safety and liveness properties

28 Termination is an example of a liveness property: Liveness properties ensure that “something good will eventually happen” Will the parallel port’s PNP dispatch routine eventually return execution to its caller (i.e. Termination) If the code calls KeEnterCriticalRegion then it will eventually call KeLeaveCriticalRegion Liveness can always be converted into fair termination Safety and liveness properties

29 What we need: Tools that automatically prove termination of program fragments Support for large program fragments (>50,000 LOC) Precision & true counterexamples Arbitrarily nested loops, recursive functions, pointers, callbacks, etc Perhaps even tools that attempt to compute code complexity Prospects for automatic/scalable termination provers

30 What we need: Tools that automatically prove termination of program fragments Support for large program fragments (>50,000 LOC) Precision & true counterexamples Arbitrarily nested loops, recursive functions Perhaps even tools that attempt to compute code complexity Prospects for automatic/scalable termination provers

31 What we need: Tools that automatically prove termination of program fragments Support for large program fragments (>50,000 LOC) Precision & true counterexamples Arbitrarily nested loops, recursive functions Perhaps even tools that attempt to compute code complexity Prospects for automatic/scalable termination provers

32 What we need: Tools that automatically prove termination of program fragments Support for large program fragments (>50,000 LOC) Precision & true counterexamples Arbitrarily nested loops, recursive functions Perhaps even tools that attempt to compute code complexity Prospects for automatic/scalable termination provers

33 Prospects for automatic/scalable termination provers What we need: Usability/features:  User supplied & maintained termination arguments  Independently checkable witnesses Bit-vector support Concurrency Fair termination and liveness Mutating heaps Variance analysis

34 Prospects for automatic/scalable termination provers What we need: Usability/features:  User supplied & maintained termination arguments  Independently checkable witnesses Bit-vector support Concurrency Fair termination and liveness Mutating heaps Variance analysis

35 Status Papers written using preliminary prototypes  Suffering from bit-rot Current plan: re-implement tools on top of SLAyer  On the Static driver Verifier product roadmap. New research directions:  Termination for fine-grained concurrency  Runtime techniques using termination analysis

36 Prospects for automatic/scalable termination provers What we need: Usability/features:  User supplied & maintained termination arguments  Independently checkable witnesses Bit-vector support Concurrency Fair termination and liveness Mutating heaps Variance analysis

37 Variance analyses

38 Variance analyses

39 Variance analyses

40 Variance analyses

41 Variance analyses

42 Variance analyses

43 Variance analyses