Model Checking for Simple Java Programs Taehoon Lee, Gihwon Kwon Department of Computer Science Kyonggi University, Korea IWFST, Shanghai, China, 2005.11.08.

Slides:



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

Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 18 Program Correctness To treat programming.
Demand-driven inference of loop invariants in a theorem prover
Automated Theorem Proving Lecture 1. Program verification is undecidable! Given program P and specification S, does P satisfy S?
Using SMT solvers for program analysis Shaz Qadeer Research in Software Engineering Microsoft Research.
Abstraction of Source Code (from Bandera lectures and talks)
© 2006 Carnegie Mellon University Combining Predicate and Numeric Abstraction for Software Model Checking Software Engineering Institute Carnegie Mellon.
Verification of Evolving Software Natasha Sharygina Joint work with Sagar Chaki and Nishant Sinha Carnegie Mellon University.
Abstraction and Modular Reasoning for the Verification of Software Corina Pasareanu NASA Ames Research Center.
Computer Science & Engineering 2111 IF and Boolean Functions 1 CSE 2111 Lecture-IF and Boolean Functions.
1 How to transform an analyzer into a verifier. 2 OUTLINE OF THE LECTURE a verification technique which combines abstract interpretation and Park’s fixpoint.
Rigorous Software Development CSCI-GA Instructor: Thomas Wies Spring 2012 Lecture 11.
Chair of Software Engineering Software Verification Stephan van Staden Lecture 10: Model Checking.
Conditional statements and Boolean expressions. The if-statement in Java (1) The if-statement is a conditional statement The statement is executed only.
The Software Model Checker BLAST by Dirk Beyer, Thomas A. Henzinger, Ranjit Jhala and Rupak Majumdar Presented by Yunho Kim Provable Software Lab, KAIST.
Rahul Sharma Işil Dillig, Thomas Dillig, and Alex Aiken Stanford University Simplifying Loop Invariant Generation Using Splitter Predicates.
Formal Methods of Systems Specification Logical Specification of Hard- and Software Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Self-Reference - Induction Cmput Lecture 7 Department of Computing Science University of Alberta ©Duane Szafron 1999 Some code in this lecture is.
ESC Java. Static Analysis Spectrum Power Cost Type checking Data-flow analysis Model checking Program verification AutomatedManual ESC.
Synergy: A New Algorithm for Property Checking
Denotational Semantics Syntax-directed approach, generalization of attribute grammars: –Define context-free abstract syntax –Specify syntactic categories.
1 Predicate Abstraction of ANSI-C Programs using SAT Edmund Clarke Daniel Kroening Natalia Sharygina Karen Yorav (modified by Zaher Andraus for presentation.
Lecture 4&5: Model Checking: A quick introduction Professor Aditya Ghose Director, Decision Systems Lab School of IT and Computer Science University of.
Developing Verifiable Concurrent Software Tevfik Bultan Department of Computer Science University of California, Santa Barbara
Modular Verification of Multithreaded Software Shaz Qadeer Compaq Systems Research Center Shaz Qadeer Compaq Systems Research Center Joint work with Cormac.
CS 267: Automated Verification Lectures 14: Predicate Abstraction, Counter- Example Guided Abstraction Refinement, Abstract Interpretation Instructor:
Recursive Algorithms Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Embedded Systems Laboratory Department of Computer and Information Science Linköping University Sweden Formal Verification and Model Checking Traian Pop.
CS2420: Lecture 2 Vladimir Kulyukin Computer Science Department Utah State University.
Formal Verification of SpecC Programs using Predicate Abstraction Himanshu Jain Daniel Kroening Edmund Clarke Carnegie Mellon University.
Cormac Flanagan University of California, Santa Cruz Hybrid Type Checking.
Model Checking for Embedded Systems Edmund Clarke, CMU High-Confidence Embedded Systems Workshop, May 1 st.
Presented by Lee Zenke 2015 Java Programming PT. 2.
Formal Verification of fFSM Model Sachoun Park, Gihwon Kwon Department of Computer Science Kyonggi University, Korea IWFST, Shanghai, China,
Prime numbers Jordi Cortadella Department of Computer Science.
Verification of Java Programs using Symbolic Execution and Loop Invariant Generation Corina Pasareanu (Kestrel Technology LLC) Willem Visser (RIACS/USRA)
Institute for Personal Robots in Education (IPRE)‏ CSC 170 Computing: Science and Creativity.
272: Software Engineering Fall 2012 Instructor: Tevfik Bultan Lecture 3: Modular Verification with Magic, Predicate Abstraction.
Aditya V. Nori, Sriram K. Rajamani Microsoft Research India.
Inferring Specifications to Detect Errors in Code Mana Taghdiri Presented by: Robert Seater MIT Computer Science & AI Lab.
Predicate Abstraction of ANSI-C Programs Using SAT By Edmund Clarke, Daniel Kroening, Natalia Sharygina, Karen Yorav Presented by Yunho Kim Provable Software.
Fault Tolerance Mechanisms ITV Model-based Analysis and Design of Embedded Software Techniques and methods for Critical Software Anders P. Ravn Aalborg.
Propositional Calculus CS 270: Mathematical Foundations of Computer Science Jeremy Johnson.
Formal Verification of Synchronization Issues of SpecC Description with Automatic Abstraction Thanyapat Sakunkonchak Masahiro Fujita Department of Electronics.
Model Checking C Programs Zijiang (James) Yang Department of Computer Science Western Michigan University In collaboration with NEC Laboratories America.
Verification & Validation By: Amir Masoud Gharehbaghi
– Phillip J. Davis and Reuben Hersh
Understanding ADTs CSE 331 University of Washington.
A: A: double “4” A: “34” 4.
/ PSWLAB Thread Modular Model Checking by Cormac Flanagan and Shaz Qadeer (published in Spin’03) Hong,Shin Thread Modular Model.
Complexity 24-1 Complexity Andrei Bulatov Interactive Proofs.
CS305j Introduction to Computing More Conditional Execution 1 Topic 13 More Conditional Execution " Great dancers are not great because of their technique;
Lecture 7 Discuss midterm Scheduling. Alternative Directory Structure See hw 1 and hw 2. This one more aligned with UNIX directory structure. Idea for.
Π-AAL: An Architecture Analysis Language for Formally Specifying and Verifying Structural and Behavioral Properties of Software Architectures Presented.
Verifying Regular Behavior of C modules Sagar Chaki, Edmund Clarke, Alex Groce, CMU Somesh Jha, Wisconsin.
Proof And Strategies Chapter 2. Lecturer: Amani Mahajoub Omer Department of Computer Science and Software Engineering Discrete Structures Definition Discrete.
Presentation Title 2/4/2018 Software Verification using Predicate Abstraction and Iterative Refinement: Part Bug Catching: Automated Program Verification.
Formal methods: Lecture
Having a BLAST with SLAM
Lifting Propositional Interpolants to the Word-Level
null, true, and false are also reserved.
IS 2935: Developing Secure Systems
Propositional Equivalences Rosen 5th and 6th Editions section 1.2
SWE 619 Software Construction Last Modified, Fall 2015 Paul Ammann
CSCI1600: Embedded and Real Time Software
Formal Methods in software development
50.530: Software Engineering
The Zoo of Software Security Techniques
Introduction to verification
Predicate Abstraction
Presentation transcript:

Model Checking for Simple Java Programs Taehoon Lee, Gihwon Kwon Department of Computer Science Kyonggi University, Korea IWFST, Shanghai, China,

2 2 Verification Does system satisfy requirements? system requirement yes no + why ? system requirement yes no + why propertymodel modeling property specification model checking Model checking

3 3 JAMES Java Application Model checking Embedded Software  JAMES.abs: abstraction module  JAMES.mc: model checking module Abstraction Model checking Java program & Predicates CTL logic True Counter Example Boolean Program JAMES.abs JAMES.mc Theorem Prover

4 4 JAMES.abs public void main( ){ Predicate C1: m<=10; Predicate C2: x==0; Predicate C3: r==true; int m = 0; int x = 0; boolean r = false; while( !r ){ if(m <= 10){ m++; }else{ x = 1; r = true; } 1. public void main( ){ Predicate C1: m <= 10; Predicate C2: x == 0; Predicate C3: r == true; 2. C1 = true; 3.C2 = true; 4.C3 = false; 5.L1: 6.if( * ){ 7.assume( !(C3)); 8.if( * ){ 9.assume( C1); 10.C1 = select(false, !C1); }else { 11.assume( !(C1)); 12.C2 = false; 13.C3 = true; } 14. goto L1; } 15. }

5 5 JAMES.mc 1. public void main( ){ Predicate C1: m <= 10; Predicate C2: x == 0; Predicate C3: r == true; 2. C1 = true; 3.C2 = true; 4.C3 = false; 5.L1: 6.if( * ){ 7.assume( !(C3)); 8.if( * ){ 9.assume( C1); 10.C1 = select(false, !C1); }else { 11.assume( !(C1)); 12.C2 = false; 13.C3 = true; } 14. goto L1; } 15. }

6 6 Results and Discussion Application results  JAMES was applied to verify LEGO robot programs in Java  Two properties were verified successfully Limitations  No support for abstraction refinement  No support for dynamic constructs in Java Discussion topics  How to find a good initial set of predicates in predicate abstraction ?  How to reduce iteration times in abstraction-checking-refinement ?  Which abstraction techniques are good for Java ?  How to deal with dynamic constructs in Java ?