Software Engineering using Formal Methods



Similar documents
Fundamentals of Software Engineering

Lecture 9 verifying temporal logic

Introduction to SPIN. Acknowledgments. Parts of the slides are based on an earlier lecture by Radu Iosif, Verimag. Ralf Huuck. Features PROMELA/SPIN

Introduction to Promela and SPIN. LACL, Université Paris 12

The Model Checker SPIN

Formal Verification by Model Checking

INF5140: Specification and Verification of Parallel Systems

Today s Agenda. Automata and Logic. Quiz 4 Temporal Logic. Introduction Buchi Automata Linear Time Logic Summary

logic language, static/dynamic models SAT solvers Verified Software Systems 1 How can we model check of a program or system?

Software Quality Exercise 1

Algorithmic Software Verification

Software Model Checking: Theory and Practice

Formal verification of contracts for synchronous software components using NuSMV

Formal Verification of Software

A Classification of Model Checking-based Verification Approaches for Software Models

MODEL CHECKING OF SERVICES WORKFLOW RECONFIGURATION: A PERSPECTIVE ON DEPENDABILITY

Introduction to Software Verification

Stylianos Basagiannis

Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification

Formal Verification and Linear-time Model Checking

Testing LTL Formula Translation into Büchi Automata

CISC422/853: Formal Methods

tutorial: hardware and software model checking

User s Guide. Version 5.0

Runtime Verification for Real-Time Automotive Embedded Software

Model Checking LTL Properties over C Programs with Bounded Traces

Automata-based Verification - I

Development of dynamically evolving and self-adaptive software. 1. Background

Model Checking: An Introduction

Static Program Transformations for Efficient Software Model Checking

Specification and Analysis of Contracts Lecture 1 Introduction

T Reactive Systems: Introduction and Finite State Automata

Software Modeling and Verification

Validated Templates for Specification of Complex LTL Formulas

TEACHING MODEL CHECKING TO UNDERGRADUATES

Temporal Logics. Computation Tree Logic

Journal of Mathematics Volume 1, Number 1, Summer 2006 pp

Model Checking of Software

Rigorous Software Development CSCI-GA

Using Patterns and Composite Propositions to Automate the Generation of Complex LTL

Model checking test models. Author: Kevin de Berk Supervisors: Prof. dr. Wan Fokkink, dr. ir. Machiel van der Bijl

Traditional Software Development. Model Requirements and JAVA Programs. Formal Verification & Validation. What is a state?

Model Checking based Software Verification

LTL Model Checking with Logic Based Petri Nets

Fabio Massacci Ida Siahaan

Model Checking II Temporal Logic Model Checking

INF5140: Specification and Verification of Parallel Systems

System modeling. Budapest University of Technology and Economics Department of Measurement and Information Systems

Program Synthesis is a Game

Runtime Verification - Monitor-oriented Programming - Monitor-based Runtime Reflection

Verifying Real-Time Embedded Software by Means of Automated State-based Online Testing and the SPIN Model Checker Application to RTEdge Models

The Course.

Applying Model Checking to Destructive Testing and Analysis of Software System

Automata-Based Verification of Temporal Properties on Running Programs Dimitra Giannakopoulou Klaus Havelund

On the Modeling and Verification of Security-Aware and Process-Aware Information Systems

SpinRCP The Eclipse Rich Client Platform Integrated Development Environment for the Spin Model Checker

Concepts of Concurrent Computation

Software Verification and Testing. Lecture Notes: Temporal Logics

Digital Design Verification

Software safety - DEF-STAN 00-55

VeriTech - A Framework for Translating among Model Description Notations

Decision Logic: if, if else, switch, Boolean conditions and variables

[Refer Slide Time: 05:10]

LTL Satisfiability Checking

Datavetenskapligt Program (kandidat) Computer Science Programme (master)

Software Verification: Infinite-State Model Checking and Static Program

MODEL CHECKING CONCURRENT AND REAL-TIME SYSTEMS: THE PAT APPROACH. LIU YANG (B.Sc. (Hons.), NUS)

Workflow Management Models and ConDec

Formal Verification Coverage: Computing the Coverage Gap between Temporal Specifications

Modeling and Validation of a Data Process Unit Control for Space Applications

Fixed-Point Logics and Computation

ONLINE EXERCISE SYSTEM A Web-Based Tool for Administration and Automatic Correction of Exercises

End to End Verification and Validation with SPIN

Transcription:

Software Engineering using Formal Methods Model Checking with Temporal Logic Wolfgang Ahrendt 24th September 2013 SEFM: Model Checking with Temporal Logic /GU 130924 1 / 33

Model Checking with Spin model name.pml correctness properties SPIN -a verifier pan.c C compiler executable verifier pan either or random/ interactive / simulation guided failing run model.trail errors: 0 SEFM: Model Checking with Temporal Logic /GU 130924 2 / 33

Stating Correctness Properties model name.pml correctness properties Correctness properties can be stated within, or outside, the model. stating properties within model using assertion statements meta labels end labels accept labels (briefly) progress labels stating properties outside model using never claims (briefly) temporal logic formulas (today s main topic) SEFM: Model Checking with Temporal Logic /GU 130924 3 / 33

Preliminaries 1. Accept labels in Promela Büchi automata 2. Fairness SEFM: Model Checking with Temporal Logic /GU 130924 4 / 33

Preliminaries 1: Acceptance Cycles Definition (Accept Location) A location marked with an accept label of the form acceptxxx: is called an accept location. Accept locations can be used to specify cyclic behavior Definition (Acceptance Cycle) A run which infinitely often passes through an accept location is called an acceptance cycle. Acceptance cycles are mainly used in never claims (see below), to define forbidden infinite behavior SEFM: Model Checking with Temporal Logic /GU 130924 5 / 33

Preliminaries 2: Fairness Does this Promela model terminate in each run? Demo: start/fair.pml byte n = 0; bool flag = f a l s e ; active proctype P() { do :: flag -> break :: e l s e -> n = 5 - n od } active proctype Q() { flag = true } Termination guaranteed only if scheduling is (weakly) fair! Definition (Weak Fairness) A run is called weakly fair iff the following holds: each continuously executable statement is executed eventually. SEFM: Model Checking with Temporal Logic /GU 130924 6 / 33

Model Checking of Temporal Properties Many correctness properties not expressible by assertions all properties that involve state changes temporal logic expressive enough to characterize many (but not all) properties In this course: temporal logic synonymous with linear temporal logic Today: model checking of properties formulated in temporal logic SEFM: Model Checking with Temporal Logic /GU 130924 7 / 33

Beyond Assertions Locality of Assertions Assertions talk only about the state at their location in the code Example Mutual exclusion enforced by adding assertion to each critical section critical ++; assert ( critical <= 1 ); critical - -; Drawbacks no separation of concerns (model vs. correctness property) changing assertions is error prone (easily out of sync) easy to forget assertions: correctness property might be violated at unexpected locations many interesting properties not expressible via assertions SEFM: Model Checking with Temporal Logic /GU 130924 8 / 33

Temporal Correctness Properties Examples of properties more conveniently expressed as global properties than as assertions: Mutual Exclusion critical <= 1 holds throughout any run Array Index within Bounds (given array a of length len) 0 <= i <= len-1 holds throughout any run Examples of properties impossible to express as assertions: Absence of Deadlock If several processes try to enter their critical section, eventually one of them does so. Absence of Starvation If one process tries to enter its critical section, eventually that process does so. All of these are temporal properties use temporal logic SEFM: Model Checking with Temporal Logic /GU 130924 9 / 33

Boolean Temporal Logic Numerical variables in expressions Expressions such as i <= len-1 contain numerical variables Propositional LTL as introduced so far only knows propositions Slight generalisation of LTL required In Boolean Temporal Logic atomic building blocks are Boolean expressions over Promela variables SEFM: Model Checking with Temporal Logic /GU 130924 10 / 33

Boolean Temporal Logic over Promela Set For BTL of Boolean Temporal Formulas (simplified) all global Promela variables and constants of type bool/bit are For BTL if e1 and e2 are numerical Promela expressions, then all of e1==e2, e1!=e2, e1<e2, e1<=e2, e1>e2, e1>=e2 are For BTL if P is a process and l is a label in P, then P@l is For BTL (P@l reads P is at l ) if φ and ψ are formulas For BTL, then all of are For BTL! φ, φ && ψ, φ ψ, φ > ψ, φ < > ψ [ ]φ, <>φ, φ U ψ SEFM: Model Checking with Temporal Logic /GU 130924 11 / 33

Semantics of Boolean Temporal Logic A run σ through a Promela model M is a chain of states L 0, I 0 L 1, I 1 L 2, I 2 L 3, I 3 L 4, I 4 L j maps each running process to its current location counter From L j to L j+1, only one of the location counters has advanced (exception: channel rendezvous) I j maps each variable in M to its current value Arithmetic and relational expressions are interpreted in states as expected; e.g. L j, I j = x<y iff I j (x) < I j (y) L j, I j = P@l iff L j (P) is the location labeled with l Evaluating other formulas For BTL in runs σ: see previous lecture SEFM: Model Checking with Temporal Logic /GU 130924 12 / 33

Safety Properties Safety Properties... are formulas of the form [ ]φ state that something good (φ) is guaranteed throughout each run equivalently: in [ ] ψ something bad (ψ) never happens Example TL formula [](critical <= 1) it is guaranteed throughout each run that at most one process visits its critical section at any time or, equivalently: it will never happen that more than one process visits its critical section SEFM: Model Checking with Temporal Logic /GU 130924 13 / 33

Applying Temporal Logic to Critical Section Problem We want to verify [](critical<=1) as a correctness property of: active proctype P() { do :: /* non - critical activity */ atomic {! incriticalq ; incriticalp = true } critical ++; /* critical activity */ critical - -; incriticalp = f a l s e od } /* similarly for process Q */ SEFM: Model Checking with Temporal Logic /GU 130924 14 / 33

Model Checking a Safety Property using jspin Alternative 1: ltl in model file 1. add definition of TL formula to Promela file Example ltl s { [](critical <= 1) } General ltl <name> { <TL formula> } can define more than one formula 2. load Promela file in jspin 3. ensure Safety is selected 4. select Verify jspin always selects first formula use command line./pan -N <name> to select arbitrary formulas 5. (if necessary) select Stop to terminate too long verification Demo: safety1.pml ltl definitions not part of Ben Ari s book (Spin 6): ignore 5.3.2, etc. SEFM: Model Checking with Temporal Logic /GU 130924 15 / 33

Model Checking a Safety Property using jspin Alternative 2: edit LTL fomula field of jspin 1. load Promela file in jspin (not necessarily containing ltl...) 2. enter [](critical <= 1) in LTL text field of jspin 3. select Translate to create a never claim, corresponding to the negation of the formula 4. ensure Safety is selected 5. select Verify 6. (if necessary) select Stop to terminate too long verification Demo: safety1.pml SEFM: Model Checking with Temporal Logic /GU 130924 16 / 33

Never Claims: Processes trying to show user wrong Büchi automaton, as Promela process, for negated property 1. Negated TL formula translated to never process 2. accepting locations in Büchi automaton represented with help of accept labels ( acceptxxx: ) 3. If one of these reached infinitely often, the orig. property is violated Example (Never claim for <>p, simplified for readability) never { /*!(<>p) */ accept_ xyz : /* passed often iff!( < > p) holds */ do :: (!p) od } SEFM: Model Checking with Temporal Logic /GU 130924 17 / 33

Model Checking against Temporal Logic Property Theory behind Spin 1. Represent the interleaving of all processes as a single automaton (only one process advances in each step), called M 2. Construct Büchi automaton (never claim) N C φ for negation of TL formula φ to be verified 3. If L ω (M) L ω (N C φ ) = then φ holds in M, otherwise we have a counterexample 4. To check L ω (M) L ω (N C φ ) construct intersection automaton (both automata advance in each step) and search for accepting run SEFM: Model Checking with Temporal Logic /GU 130924 18 / 33

Model Checking a Safety Property using Web Interface 1. add definition of TL formula to Promela file Example ltl s { [](critical <= 1) } General ltl <name> { <TL formula> } can define more than one formula 2. load Promela file into web interface 3. ensure Safety is selected 4. enter name of LTL formula in according field 5. select Verify Demo: safety1.pml SEFM: Model Checking with Temporal Logic /GU 130924 19 / 33

Model Checking a Safety Property using Spin directly Command Line Execution (Alt. 1) Make sure ltl <name> { <TL formula> } is in <file>.pml > spin -a <file >. pml > gcc -DSAFETY - o pan pan. c >./ pan -N <name> Demo: target/safety1.pml The ltl <name> { <TL formula> } construct must be part of your lab submission! SEFM: Model Checking with Temporal Logic /GU 130924 20 / 33

Model Checking a Safety Property using Spin directly Command Line Execution (Alt. 2) Write negated TL formula in file <formulafile>.prp (first line) > spin - a - F < formulafile >. PRP < file >. pml > gcc -DSAFETY - o pan pan. c >./ pan some platforms have problems with -F SEFM: Model Checking with Temporal Logic /GU 130924 21 / 33

Liveness Properties Liveness Properties... formulas of the form <>φ state that something good (φ) eventually happens in each run Example <>csp (with csp a variable only true in the critical section of P) in each run, process P visits its critical section eventually SEFM: Model Checking with Temporal Logic /GU 130924 22 / 33

Applying Temporal Logic to Starvation Problem We want to verify <>csp as a correctness property of: active proctype P() { do :: /* non - critical activity */ atomic {! incriticalq ; incriticalp = true } csp = true ; /* critical activity */ csp = f a l s e ; incriticalp = f a l s e od } /* similarly for process Q */ /* there, using csq */ SEFM: Model Checking with Temporal Logic /GU 130924 23 / 33

Model Checking a Liveness Property using jspin 1. open Promela file liveness1.pml 2. enter <>csp in LTL fomula field 3. select Translate to create a never claim, corresponding to the negation of the formula 4. ensure that Acceptance is selected (Spin will search for accepting cycles through the never claim) 5. for the moment uncheck Weak Fairness (see discussion below) 6. select Verify Alternative to 2. and 3., write ltl l { <>csp } in Promela file (as first ltl formula). SEFM: Model Checking with Temporal Logic /GU 130924 24 / 33

Verification Fails Verification fails! Why? Demo: start/liveness1.pml The liveness property on one process had no chance. Not even weak fairness was switched on! SEFM: Model Checking with Temporal Logic /GU 130924 25 / 33

Model Checking Liveness with Weak Fairness using jspin Always check enforce weak fairness constraint when verifying liveness 1. open Promela file 2. enter <>csp in LTL text field 3. select Translate to create a never claim, corresponding to the negation of the formula 4. ensure that Acceptance is selected (Spin will search for accepting cycles through the never claim) 5. ensure Weak Fairness is checked 6. select Verify Alternative to 2. and 3., write ltl l { <>csp } in Promela file (as first ltl formula). SEFM: Model Checking with Temporal Logic /GU 130924 26 / 33

Model Checking Liveness using Web Interface 1. add definition of TL formula to Promela file Example ltl l { <>csp } General ltl <name> { <TL formula> } can define more than one formula 2. load Promela file into web interface 3. ensure Acceptance is selected 4. enter name of LTL formula in according field 5. select Verify Demo: liveness1.pml SEFM: Model Checking with Temporal Logic /GU 130924 27 / 33

Model Checking Liveness using Spin directly Command Line Execution (Alt. 1) Make sure ltl <name> { <TL formula> } is in <file>.pml > spin -a <file >. pml > gcc -o pan pan.c >./ pan -a -f [-N <name >] -a acceptance cycles, -f weak fairness Demo: start/liveness1.pml SEFM: Model Checking with Temporal Logic /GU 130924 28 / 33

Model Checking Liveness using Spin directly Command Line Execution (Alt. 2) Write negated TL formula in file <formulafile>.prp (first line) > spin - a - F < formulafile >. PRP < file >. pml > gcc -o pan pan.c >./ pan -a -f [-N <name >] -a acceptance cycles, -f weak fairness SEFM: Model Checking with Temporal Logic /GU 130924 29 / 33

Limitation of Weak Fairness Verification fails again! Why? Weak fairness is too weak... Definition (Weak Fairness) A run is called weakly fair iff the following holds: each continuously executable statement is executed eventually. Note that!incriticalq is not continuously executable! Restriction to weak fairness is principal limitation of Spin The only way to show liveness of our example is to rewrite the model SEFM: Model Checking with Temporal Logic /GU 130924 30 / 33

Temporal Model Checking without Ghost Variables We want to verify mutual exclusion without using ghost variables bool incriticalp = f a l s e, incriticalq = f a l s e ; active proctype P() { do :: atomic {! incriticalq ; incriticalp = true } cs: /* critical activity */ incriticalp = f a l s e od } /* similar for process Q with same label cs: */ ltl s { []!( P@cs && Q@cs ) } Demo: start/noghost.pml SEFM: Model Checking with Temporal Logic /GU 130924 31 / 33

Liveness Revisited Label expressions often remove the need for ghost variables Specify liveness of fair.pml using labels Prove termination Weak fairness is needed, and sufficient Demo: target/fair.pml SEFM: Model Checking with Temporal Logic /GU 130924 32 / 33

Literature for this Lecture Ben-Ari Chapter 5 except Sections 5.3.2, 5.3.3, 5.4.2 (ltl replaces #define and -f option of Spin) SEFM: Model Checking with Temporal Logic /GU 130924 33 / 33