The Bogor Model Checking Framework

Slides:



Advertisements
Similar presentations
Objects and Classes David Walker CS 320. Advanced Languages advanced programming features –ML data types, exceptions, modules, objects, concurrency,...
Advertisements

Programming Languages and Paradigms
Abstraction and Modular Reasoning for the Verification of Software Corina Pasareanu NASA Ames Research Center.
Automated Software Verification with a Permission-Based Logic 20 th June 2014, Zürich Malte Schwerhoff, ETH Zürich.
Efficient Reachability Analysis for Verification of Asynchronous Systems Nishant Sinha.
1 Spin Model Checker Samaneh Navabpour Electrical and Computer Engineering Department University of Waterloo SE-464 Summer 2011.
Chapter 9 Subprogram Control Consider program as a tree- –Each parent calls (transfers control to) child –Parent resumes when child completes –Copy rule.
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
1 BOGOR – A Flexible Framework For Creating Model Checkers Presented by : Roli Shrivastava 20 March 2007.
Denotational Semantics Syntax-directed approach, generalization of attribute grammars: –Define context-free abstract syntax –Specify syntactic categories.
1 A Modular Checker for Multithreaded Programs Cormac Flanagan HP Systems Research Center Joint work with Shaz Qadeer Sanjit A. Seshia.
CSC 8310 Programming Languages Meeting 2 September 2/3, 2014.
Language Evaluation Criteria
Programming Language C++ Xulong Peng CSC415 Programming Languages.
Copyright 2001, Matt Dwyer, John Hatcliff, and Radu Iosif. The syllabus and all lectures for this course are copyrighted materials and may not be used.
CIS 842: Specification and Verification of Reactive Systems Lecture INTRO-Bogor-Simulation: Executing (Simulating) Concurrent Systems in Bogor Copyright.
Model construction and verification for dynamic programming languages Radu Iosif
An extensible and highly-modular model checking framework SAnToS Laboratory, Kansas State University, USA Matt Dwyer.
1 CSEP590 – Model Checking and Automated Verification Lecture outline for August 6, 2003.
Adapting Side-Effects Analysis for Modular Program Model Checking M.S. Defense Oksana Tkachuk Major Professor: Matthew Dwyer Support US National Science.
Domain-specific Model Checking with Bogor SAnToS Laboratory, Kansas State University, USA US Army Research Office (ARO)
CIS 842: Specification and Verification of Reactive Systems Lecture INTRO-Examples: Simple BIR-Lite Examples Copyright 2004, Matt Dwyer, John Hatcliff,
1 9/6/05CS360 Windows Programming CS360 Windows Programming.
1 Bogor – Software Model Checking Framework Presented by: Arpita Gandhi.
Copyright 2001, Matt Dwyer, John Hatcliff, and Radu Iosif. The syllabus and all lectures for this course are copyrighted materials and may not be used.
/ PSWLAB S PIN Search Optimization from “THE SPIN MODEL CHECKER” by G. Holzmann Presented by Hong,Shin 23 th Nov SPIN Search.
Rich Internet Applications 2. Core JavaScript. The importance of JavaScript Many choices open to the developer for server-side Can choose server technology.
Session 02 Module 3: Statements and Operators Module 4: Programming constructs Module 5: Arrays.
Complexity Relief Techniques for Model Checking METU, Aug SOFTWARE VERIFICATION WORKSHOP Hüsnü Yenigün Sabanci University Informatics Institute,
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Chapter 5 Names, Bindings, Type Checking CSCE 343.
Chapter 2 Objects and Classes
Functional Programming
Data Types In Text: Chapter 6.
A variable is a name for a value stored in memory.
Working with Java.
PRINCIPLES OF COMPILER DESIGN
Abstract Data Types and Encapsulation Concepts
Objectives In this chapter, you will:
CSE 503 – Software Engineering
Model Checking Software Using The Bogor Framework
Space-Reduction Strategies for Model Checking Dynamic Software
Testing & Testing Tools
Model Checking Software Using The Bogor Framework
FORTRAN 04 February 1999; CS655.
Chapter 2 Objects and Classes
CSCI 511 Operating Systems Chapter 5 (Part C) Monitor
.NET and .NET Core 5.2 Type Operations Pan Wuming 2016.
Names, Binding, and Scope
Designing with Java Exception Handling
VISUAL BASIC.
Starting JavaProgramming
Topics Introduction to File Input and Output
Abstract Data Types and Encapsulation Concepts
CS-0401 INTERMEDIATE PROGRAMMING USING JAVA
Component-Level Design
Over-Approximating Boolean Programs with Unbounded Thread Creation
The Spin Model Checker - Advanced Features
Units with – James tedder
Discrete Controller Synthesis
An explicit state model checker
Focus of the Course Object-Oriented Software Development
Objects Managing a Resource
A Refinement Calculus for Promela
Designing with Java Exception Handling
Compiler Construction
Topics Introduction to File Input and Output
The Spin Model Checker - Advanced Features
Compiler Construction
CSE 303 Concepts and Tools for Software Development
Presentation transcript:

The Bogor Model Checking Framework Emily Gibson November 28, 2006

About Bogor Motivation: Domain-specific model checkers may be more effective (and cheaper) than general purpose model checkers SPIN, NuSMV, etc support fixed input langs, state-space representations, reduction & exploration algs Most existing tools don’t directly support OO lang features Solution: customizable & easily extensible model checking framework

Modularity

Basic Features Java, eclipse plug-in or command line Customized text editor Syntax highlighting Highlights errors in model/properties Modes: Model Checking -- explore all possible paths Random Simulation User-guided Simulation

Features Supports unbounded dynamic thread and heap object creation with automatic garbage collection Canonical heap representation (based on dSpin) so heaps are observationally equivalent Only keep state in BIR vars, semantics can be implemented in Java and kept separate from model Customization can improve space and time requirements by over three orders of magnitude!

BIR: Bogor Input Representation Primitive types double, int, bool, enum thread IDs, others -- extensible Default values like spin No coercion -- need explicit casts Non-primitive types record, array, string, lock, extensions Type Aliases -- compact names for types Fun[ction] types -- like SML

BIR Cont’d Scope: functions and threads have own namespace, but can’t hide with global declarations Locations: control pts in threads Annotated with live vars (if empty, bogor calcs; vars not in set reset to default vals) Jump and Catch statements Actions: assign, assert, assume, lock, throw, exit

BIR: High or Low Level Syntax? Used for automatic model extraction Interleavings only happen between locations (atomic by default) Basic syntax: loc[ation], live, do, when, visible, goto, catch, return High level Used for manual model construction Includes high-level programming constructs: atomic, while, if, elseif, else, try, catch, skip, return, choose Converted to low-level during model checking

Example: Choose syntax High-level system ChooseExample { int i := 0; active[3] thread MAIN() { atomic choose when <i < 1> do i := i + 1; when <i < 2> do i := i + 2; else do i := i + 3; end }

Translated to Low-level system ChooseExample { int i := 0; active [3] thread MAIN() { boolean temp$0; boolean temp$1; boolean temp$2; ANY_THROWABLE atomicCatch$Local; loc loc0: do { Atomic.beginAtomic(); } goto loc1; loc loc1: do invisible { temp$0 := i < 1; temp$1 := i < 2; temp$2 := !((temp$0 || temp$1)); } goto loc2; loc loc2: when temp$0 do invisible { } goto loc3; when temp$1 do invisible { } goto loc5; when temp$2 do invisible { } goto loc7; loc loc3: do { i := i + 1; } goto loc4; loc loc4: do { } goto loc9; loc loc5: do { i := i + 2; } goto loc6; loc loc6: do { } goto loc9; loc loc7: do { i := i + 3; } goto loc8; loc loc8: do { } goto loc9; loc loc9: do { Atomic.endAtomic(); } goto loc10; loc loc10: do { } return; loc atomicCatch: do { Atomic.endAtomic(); throw atomicCatch$Local; } goto atomicCatch; catch ANY_THROWABLE atomicCatch$Local at loc1, loc2, loc3, loc4, loc5, loc6, loc7, loc8 goto atomicCatch; } extension Atomic for edu.ksu.cis.bogor.projects.bogor.ext.atomicity.AtomicModule { actiondef beginAtomic (); actiondef endAtomic (); throwable record ANY_THROWABLE {} Translated to Low-level

Advanced Features The default distribution does not include the optimizations described in various publications --- it’s supposed to be “easily understood”. Features not included: symmetry reduction collapse compression partial order reduction Are available as separate extension modules through subversion: https://robby.user.cis.ksu.edu/bogor

References Bogor web site: http://bogor.projects.cis.ksu.edu/ Robby, Matthew Dwyer, John Hatcliff. “Bogor: A Flexible Framework for Creating Software Model Checkers.” In Proceedings of Testing: Academic & Industrial Conference - Practice And Research Techniques, June 2006. Matthew B. Dwyer, John Hatcliff, Matthew Hoosier, Robby. “Building Your Own Software Model Checker Using the Bogor Extensible Model Checking Framework.” In Proceedings of Computer-Aided Verification, January 2005.

Demo… Dining Philosophers

Note to self… Select the configuration! (Highlight when model checking)