180 likes | 429 Views
Model Checking. Model Checking. Used in studying behaviors of reactive systems Typically involves three steps: Create a finite state model (FSM) of the system design Specify critical correctness properties Validate the model w/r to the specifications. Create a FSM. FSM languages
E N D
Model Checking • Used in studying behaviors of reactive systems • Typically involves three steps: • Create a finite state model (FSM) of the system design • Specify critical correctness properties • Validate the model w/r to the specifications
Create a FSM • FSM languages • focus on expressing concurrency, synchronization, and communication • abstract details of internal computations • must be precise and unambiguous (formally defined syntax and semantics) • We will use Promela for giving system descriptions
Specify correctness properties • Safety properties: • Nothing “bad” ever happens • Formalized using state invariants • execution never reaches a “bad” state • Liveness properties: • Something “good” eventually happens • Formalized using temporal logic • special logic for describing sequences
Validate the model • “Execute” the model to test it • simulate executions of the system • check satisfaction of safety properties along simulated executions • Exhaustive analysis • generate reachability graph to verify safety and liveness properties • Generate counterexamples to illustrate failures
Example properties • Pump is never on unless Burner is also on • Whenever Sensor calls resp-temp(LOW), eventually Controller becomes all-on
Reachability Graph • Graph of global states that can be “reached” during execution • global state contains a state for each concurrent “process” • transitions show how an event or action transforms the global state • Analyze global state space to verify safety properties • Analyze paths through the RG to verify liveness properties
Promela • The system description language of SPIN • Designed for modeling data communication protocols • System described as a collection of concurrent processes • Processes communicate and synchronize via message channels and global variables
Promela • Specify macro definitions #define signal 0 • Declare symbolic constants mtype = { ON, OFF, LOW, OK } • Declare a synchronous message channel chan pump_in = [0] of { mtype }
Promela • Create a process instance active proctype pump ( ) { statements } • Send a message pump_in!ON • Receive a message pump_in?ON
SPIN simulation of HHS • SPIN automatically generates sequence diagrams to represent executions • random • guided • interactive • Automates tracing between system views • sequence diagram • Promela description • state diagram • textual execution traces
Verification of a safety property • Pump is never on unless Burner is also on bool burner_is_on;
Verification of a liveness property Whenever Sensor calls resp-temp(LOW), eventually Controller becomes all-on