An explicit state model checker

Slides:



Advertisements
Similar presentations
1 Reasoning with Promela Safety properties bad things do not happen can check by inspecting finite behaviours Liveness properties good things do eventually.
Advertisements

The SPIN System. What is SPIN? Model-checker. Based on automata theory. Allows LTL or automata specification Efficient (on-the-fly model checking, partial.
Model Checking and Testing combined
Black Box Checking Book: Chapter 9 Model Checking Finite state description of a system B. LTL formula. Translate into an automaton P. Check whether L(B)
Automatic Verification Book: Chapter 6. How can we check the model? The model is a graph. The specification should refer the the graph representation.
The SPIN System. What is SPIN? Model-checker. Based on automata theory. Allows LTL or automata specification Efficient (on-the-fly model checking, partial.
Tintu David Joy. Agenda Motivation Better Verification Through Symmetry-basic idea Structural Symmetry and Multiprocessor Systems Mur ϕ verification system.
Representing Boolean Functions for Symbolic Model Checking Supratik Chakraborty IIT Bombay.
CS 267: Automated Verification Lecture 8: Automata Theoretic Model Checking Instructor: Tevfik Bultan.
Partial Order Reduction: Main Idea
1 Model checking. 2 And now... the system How do we model a reactive system with an automaton ? It is convenient to model systems with Transition systems.
CS 290C: Formal Models for Web Software Lecture 3: Verification of Navigation Models with the Spin Model Checker Instructor: Tevfik Bultan.
Automatic Verification Book: Chapter 6. What is verification? Traditionally, verification means proof of correctness automatic: model checking deductive:
Budapest University of Technology and EconomicsDagstuhl 2004 Department of Measurement and Information Systems 1 Towards Automated Formal Verification.
Game-theoretic approach to the simulation checking problem Peter Bulychev Vladimir Zakharov Lomonosov Moscow State University.
UPPAAL Introduction Chien-Liang Chen.
CS 290C: Formal Models for Web Software Lecture 4: Implementing and Verifying Statecharts Specifications Using the Spin Model Checker Instructor: Tevfik.
Timed Automata.
Promela/SPIN Acknowledgements: These notes used some of the material presented by Flavio Lerda as part of Ed Clarke’s model-checking course.
Formal verification in SPIN Karthikeyan Bhargavan, Davor Obradovic CIS573, Fall 1999.
/ PSWLAB P ROMELA Semantics from “THE SPIN MODEL CHECKER” by G. J. Holzmann Presented by Hong,Shin 5 th Oct :021PROMELA Semantics.
תרגול 9 META LABELS. Basic types of claims State properties.
CS 267: Automated Verification Lecture 10: Nested Depth First Search, Counter- Example Generation Revisited, Bit-State Hashing, On-The-Fly Model Checking.
PSWLAB S PIN Search Algorithm from “THE SPIN MODEL CHECKER” by G Holzmann Presented by Hong,Shin 9 th Nov SPIN Search Algorithm.
1 Temporal Claims A temporal claim is defined in Promela by the syntax: never { … body … } never is a keyword, like proctype. The body is the same as for.
S. Ramesh Model-Checking Distributed Software S. Ramesh IIT Bombay.
The Spin Model Checker Promela Introduction Nguyen Tuan Duc Shogo Sawai.
1 Spin Model Checker Samaneh Navabpour Electrical and Computer Engineering Department University of Waterloo SE-464 Summer 2011.
Shin Hong, KAIST17 th April,2007 1/33 Provable Software Laboratory, CS KAIST.
CIS 540 Principles of Embedded Computation Spring Instructor: Rajeev Alur
Spin Tutorial (some verification options). Assertion is always executable and has no other effect on the state of the system than to change the local.
© 2011 Carnegie Mellon University SPIN: Part Bug Catching: Automated Program Verification and Testing Sagar Chaki November 2, 2011.
1 Formal Methods in SE Qaisar Javaid Assistant Professor Lecture # 11.
Temporal Logic Model- checking with SPIN COMP6004 Stéphane Lo Presti Part 4: Specifications.
Model Checking. Used in studying behaviors of reactive systems Typically involves three steps: Create a finite state model (FSM) of the system design.
1 Carnegie Mellon UniversitySPINFlavio Lerda SPIN An explicit state model checker.
Specification Formalisms Book: Chapter 5. Properties of formalisms Formal. Unique interpretation. Intuitive. Simple to understand (visual). Succinct.
1 Formal Engineering of Reliable Software LASER 2004 school Tutorial, Lecture1 Natasha Sharygina Carnegie Mellon University.
CS 290C: Formal Models for Web Software Lecture 4: Model Checking Navigation Models with Spin Instructor: Tevfik Bultan.
The Model Checker SPIN Written by Gerard J. Holzmann Presented by Chris Jensen.
LTL – model checking Jonas Kongslund Peter Mechlenborg Christian Plesner Kristian Støvring Sørensen.
272: Software Engineering Fall 2012 Instructor: Tevfik Bultan Lecture 4: SMT-based Bounded Model Checking of Concurrent Software.
1 Carnegie Mellon UniversitySPINFlavio Lerda Bug Catching SPIN An explicit state model checker.
Model Checking and Related Techniques
Cheng/Dillon-Software Engineering: Formal Methods Model Checking.
Wishnu Prasetya Model Checking with SPIN A Bit More about SPIN.
Correctness requirements. Basic Types of Claims Basic assertions End-state labels Progress-state labels Accept-state labels Never claims Trace assertions.
Scientific Computing By: Fatima Hallak To: Dr. Guy Tel-Zur.
Korea Advanced Institute of Science and Technology The Spin Model Checker - Advanced Features Moonzoo Kim CS Dept. KAIST.
MODEL CHECKING WITH SPIN MODELING AND VERIFICATION WITH SPIN ANDREA ORLANDINI – ISTC (CNR) TexPoint fonts used in EMF. Read the TexPoint manual before.
Radu Iosif Introduction to SPIN Radu Iosif
1 CSEP590 – Model Checking and Automated Verification Lecture outline for August 6, 2003.
Temporal Logic Model-checking with SPIN
/ PSWLAB S PIN Search Optimization from “THE SPIN MODEL CHECKER” by G. Holzmann Presented by Hong,Shin 23 th Nov SPIN Search.
Lecture 4 Introduction to Promela. Promela and Spin Promela - process meta language G. Holzmann, Bell Labs (Lucent) C-like language + concurrency dyamic.
Software Systems Verification and Validation Laboratory Assignment 4 Model checking Assignment date: Lab 4 Delivery date: Lab 4, 5.
Today’s Agenda  Quiz 5 (end of the class)  Quick Review  Finish Search Algorithms Formal Methods in Software Engineering1.
Today’s Agenda  Quiz 4  Temporal Logic Formal Methods in Software Engineering1.
Symbolic Model Checking of Software Nishant Sinha with Edmund Clarke, Flavio Lerda, Michael Theobald Carnegie Mellon University.
CS5270 Lecture 41 Timed Automata I CS 5270 Lecture 4.
Formal methods: Lecture
Formal verification in SPIN
CSE 503 – Software Engineering
Automatic Verification
The Spin Model Checker - Advanced Features
Producing short counterexamples using “crucial events”
A Refinement Calculus for Promela
COMP60621 Designing for Parallelism
The Spin Model Checker - Advanced Features
CSE 503 – Software Engineering
Presentation transcript:

An explicit state model checker SPIN An explicit state model checker

Explict State Model Checker Represents the system as an finite state machine Visits each reachable state (state space) explicitly Checks some property Property is satisfied Counterexample

DFS DFS visit of the state space procedure DFS(s) visited = visited  {s}; for each successor s’ of s if s’  visited then DFS(s’); end if end for end procedure

DFS How do we: Represent the transition relation Store the visited set Needs fast access (hash table) State space explosion Check properties

Promela Process Algebra An algebraic approach to the study of concurrent processes. Its tools are algebraical languages for the specification of processes and the formulation of statements about them, together with calculi for the verification of these statements. [Van Glabbeek, 1987] Describes the system in a way similar to a programming language

Promela Asynchronous composition of independent processes Communication using channels and global variables Non-deterministic choices and interleavings

An Example mtype = { NONCRITICAL, TRYING, CRITICAL }; show mtype state[2]; proctype process(int id) { beginning: noncritical: state[id] = NONCRITICAL; if :: goto noncritical; :: true; fi; trying: state[id] = TRYING; :: goto trying; critical: state[id] = CRITICAL; :: goto critical; goto beginning;} init { run process(0); run process(1); } NC C T

An Example mtype = { NONCRITICAL, TRYING, CRITICAL }; show mtype state[2]; proctype process(int id) { beginning: noncritical: state[id] = NONCRITICAL; if :: goto noncritical; :: true; fi; trying: state[id] = TRYING; :: goto trying; critical: state[id] = CRITICAL; :: goto critical; goto beginning;} init { run process(0); run process(1); }

An Example mtype = { NONCRITICAL, TRYING, CRITICAL }; show mtype state[2]; proctype process(int id) { beginning: noncritical: state[id] = NONCRITICAL; if :: goto noncritical; :: true; fi; trying: state[id] = TRYING; :: goto trying; critical: state[id] = CRITICAL; :: goto critical; goto beginning;} init { run process(0); run process(1); }

An Example mtype = { NONCRITICAL, TRYING, CRITICAL }; show mtype state[2]; proctype process(int id) { beginning: noncritical: state[id] = NONCRITICAL; if :: goto noncritical; :: true; fi; trying: state[id] = TRYING; :: goto trying; critical: state[id] = CRITICAL; :: goto critical; goto beginning;} init { run process(0); run process(1); }

An Example mtype = { NONCRITICAL, TRYING, CRITICAL }; show mtype state[2]; proctype process(int id) { beginning: noncritical: state[id] = NONCRITICAL; if :: goto noncritical; :: true; fi; trying: state[id] = TRYING; :: goto trying; critical: state[id] = CRITICAL; :: goto critical; goto beginning;} init { run process(0); run process(1); }

An Example mtype = { NONCRITICAL, TRYING, CRITICAL }; show mtype state[2]; proctype process(int id) { beginning: noncritical: state[id] = NONCRITICAL; if :: goto noncritical; :: true; fi; trying: state[id] = TRYING; :: goto trying; critical: state[id] = CRITICAL; :: goto critical; goto beginning;} init { run process(0); run process(1); } NC T C

Enabled Statements A statement needs to be enabled for the process to be scheduled. bool a, b; proctype p1() { a = true; a & b; a = false; } proctype p2() b = false; b = true; init { a = false; b = false; run p1(); run p2(); }

Enabled Statements A statement needs to be enabled for the process to be scheduled. bool a, b; proctype p1() { a = true; a & b; a = false; } proctype p2() b = false; b = true; init { a = false; b = false; run p1(); run p2(); } These statements are enabled only if both a and b are true.

Enabled Statements A statement needs to be enabled for the process to be scheduled. bool a, b; proctype p1() { a = true; a & b; a = false; } proctype p2() b = false; b = true; init { a = false; b = false; run p1(); run p2(); } These statements are enabled only if both a and b are true. In this case b is always false and therefore there is a deadlock.

Other constructs Do loops do :: count = count + 1; :: (count == 0) -> break od

Other constructs Do loops Communication over channels proctype sender(chan out) { int x; if ::x=0; ::x=1; fi out ! x; }

Other constructs Do loops Communication over channels Assertions proctype receiver(chan in) { int value; in ? value; assert(value == 0 || value == 1) }

Other constructs Do loops Communication over channels Assertions Atomic Steps int value; proctype increment() { atomic { x = value; x = x + 1; value = x; } }

On-The-Fly System is the asynchronous composition of processes The global transition relation is never build For each state the successor states are enumerated using the transition relation of each process

On-The-Fly 1 0 0

On-The-Fly 1 0 0 1 0

On-The-Fly 1 0 0 1 0

On-The-Fly 1 0 0 1 0 1 1

On-The-Fly 1 0 0 1 0 0 1 1 1

On-The-Fly 1 0 0 1 0 0 1 1 1

On-The-Fly 1 0 0 1 0 0 1 1 1

On-The-Fly 1 0 0 1 0 0 1 1 1

On-The-Fly 1 0 0 1 0 0 1 1 1

On-The-Fly 1 0 0 1 0 0 1 1 1

On-The-Fly 1 0 0 1 0 0 1 1 1

On-The-Fly 1 0 0 1 0 0 1 1 1

On-The-Fly 1 0 0 1 0 0 1 1 1

Visited Set Represents all the states that have been reached so far Will eventually become the set of all reachable state (state space) Test of presence of a state in the set must be efficient It is performed for each reached state procedure DFS(s) visited = visited  {s}; for each successor s’ of s if s’  visited then DFS(s’); end if end for end procedure

Visited Set Hash table Efficient for testing even if the number of elements in it is very big (≥ 106)

Visited Set Hash table Reduce memory usage Efficient for testing even if the number of elements in it is very big (≥ 106) Reduce memory usage Compress each state When a transition is executed only a limited part of the state is modified

Visited Set Hash table Reduce memory usage Reduce the number of states Efficient for testing even if the number of elements in it is very big (≥ 106) Reduce memory usage Compress each state Reduce the number of states Partial Order Reduction

State Representation Global variables Processes and local variables Queues Global Variables Processes Queues

Compression Each transition changes only a small part of the state Assign a code to each element dynamically Encoded states + basic elements use considerably less spaces than the uncompressed states

Compression i=0 j=0 P0 x=0 P0 x=1 Q0 {1} P0 x=0 P1 y=0 1 2 3 2 1 3 2 1 1 2 3 2 1 3 2 1 3 2 P1 y=0 1 P0 x=1 i=0 j=0 P0 x=0 Q0 {1}

Compression i=0 j=0 P0 x=0 P0 x=1 Q0 {} Q0 {1} P0 x=1 P0 x=0 P1 y=0 1 1 1 1 2 q ? x 3 2 1 3 2 1 3 2 P1 y=0 1 P0 x=1 Q0 {} i=0 j=0 P0 x=0 Q0 {1}

Hash Compaction Uses a hashing function to store each state using only 2 bits

Hash Compaction Uses a hashing function to store each state using only 2 bits There is an non-zero probability that two states are mapped into the same bits

Hash Compaction Uses a hashing function to store each state using only 2 bits There is an non-zero probability that two states are mapped into the same bits If the number of states is quite smaller than the number of bits available there is a pretty good chance of not having conflicts

Hash Compaction Uses a hashing function to store each state using only 2 bits There is an non-zero probability that two states are mapped into the same bits If the number of states is quite smaller than the number of bits available there is a pretty good chance of not having conflicts The result is not (always) 100% correct!

Minimized Automata Reduction Turns the state in a sequence of integers

Minimized Automata Reduction Turns the state in a sequence of integers Constructs an automata which accepts the states in the visited set

Minimized Automata Reduction Turns the state in a sequence of integers Constructs an automata which accepts the states in the visited set Works like a BDD but on non-binary variables (MDD)

Minimized Automata Reduction Turns the state in a sequence of integers Constructs an automata which accepts the states in the visited set Works like a BDD but on non-binary variables (MDD) The variables are the components of the state

Minimized Automata Reduction Turns the state in a sequence of integers Constructs an automata which accepts the states in the visited set Works like a BDD but on non-binary variables (MDD) The variables are the components of the state The automata is the minimal automata

Minimized Automata Reduction Turns the state in a sequence of integers Constructs an automata which accepts the states in the visited set Works like a BDD but on non-binary variables (MDD) The variables are the components of the state The automata is the minimal automata The automata is updated efficiently

Partial Order Reduction Some interleavings of processes are equivalent x=0 y=0 x++ y++ x=1 y=0 x=1 y=0 x=0 y=1 x=0 y=1 y++ x++ x=1 y=1

Partial Order Reduction Some interleavings of processes are equivalent Computing such interleavings and storing the intermediate states is expensive

Partial Order Reduction Some interleavings of processes are equivalent Computing such interleavings and storing the intermediate states is expensive Partial order reduction defines a reduced system which is equivalent to the original system but contains less states and transitions Defines an equivalent relation between states and computes the quotient of the state transition graph to obtain a reduced state transition graph. Properties are true of the reduced state transition graph if and only if are true of the original graph.

Partial Order Reduction Optimal partial order reduction is as difficult as model checking!

Partial Order Reduction Optimal partial order reduction is as difficult as model checking! Compute an approximation based on syntactical information

Partial Order Reduction Access to local variables Receive on exclusive receive-access queues Send on exclusive send-access queues Optimal partial order reduction is as difficult as model checking! Compute an approximation based on syntactical information Independent Invisible Check (at run-time) for actions postponed at infinitum Not mentioned in the property So called stack proviso

References http://spinroot.com/ Design and Validation of Computer Protocols by Gerard Holzmann The Spin Model Checker by Gerard Holzmann An automata-theoretic approach to automatic program verification, by Moshe Y. Vardi, and Pierre Wolper An analysis of bitstate hashing, by G.J. Holzmann An Improvement in Formal Verification, by G.J. Holzmann and D. Peled Simple on-the-fly automatic verification of linear temporal logic, by Rob Gerth, Doron Peled, Moshe Vardi, and Pierre Wolper A Minimized automaton representation of reachable states, by A. Puri and G.J. Holzmann