Introduction to Promela and SPIN. LACL, Université Paris 12
|
|
|
- Phoebe Judith Joseph
- 10 years ago
- Views:
Transcription
1 Introduction to Promela and SPIN LACL, Université Paris 12
2 Promela = Process Meta Language A specification language! No programming language! Used for system description : Specify an abstraction of the system, not the system itself. Emphasize on process synchronization & coordination, not on computation. Promela uses nondeterminism as an abstraction technique. Suitable for software modeling, not for hardware.
3 SPIN = Simple Promela Interpreter A simulator for Promela programs. And a verifier for the properties of Promela programs. In simulation mode, SPIN gives quick impressions of system behavior. Nondeterminism in specification is randomly solved. No infinite behaviors. In verification mode, SPIN generates a C program that constructs an implementation of the LTL model-checking algorithm for the given model. Then one has to compile/run this C program to get the result.... which may provide a trace for the bugs in the model.
4 Hello world Promela program hello.pml : active proctype main(){ printf("hello world") Simulating the program : $ spin hello.pml hello world 1 process created proctype = declares a new process type. active = instantiate one process of this type.
5 Producers/Consumers mtype = { P,C ; /* symbols used */ mtype turn = P; /* shared variable */ active proctype producer(){ do :: (turn == P) -> /* Guard */ printf("produce\n"); turn = C od active proctype consumer(){ again: if :: (turn == C) -> /* Guard */ printf("consume\n"); turn = P; goto again fi
6 Condition statements and nondeterminism Proctype consumer rewritten : again: (turn == C); printf("consume\n"); turn = P; goto again; Condition statement, blocking the process until the condition becomes true. Nondeterminism : byte count; active proctype counter(){ do :: count++ :: count-- :: (count==0) -> break od
7 Atomic statements Promela focuses on modeling distributed systems. byte a; active proctype p1(){ a=1; b=a+b active proctype p2(){ a=2; Atomicity needed for avoiding race conditions : atomic{ a=1; b=a+b atomic{ tmp=y; y=x; x= tmp
8 Peterson s algorithm for mutual exclusion bool turn, flag[2]; byte cnt; active [2] proctype proc(){ pid i,j; i=_pid; j=1- _pid; again: flag[i]=true; turn=i; (flag[j]==false turn!=i) -> cnt++; assert(cnt==1); cnt--; goto again;
9 Verifying Peterson s algorithm $ spin -a peterson.pml # creates several files named pan.c, pan.t,... $ gcc -o pan pan.c $./pan Full statespace search for: never claim - (none specified) assertion violations + acceptance cycles - (not selected) invalid end states + State-vector 20 byte, depth reached 22, errors: 0 38 states, stored 25 states, matched 63 transitions (= stored+matched) 0 atomic steps Errors = 0! The two assertions cnt==1 (one for each proctype) are satisfied in all runs!
10 Processes in more detail Process = instantiation of a proctype. Consisting of data declatarions and statements. Always declared globally. Each running process has a unique pid, Numbered in order of creation, starting with 0. Referenced in the process by predefined pid. Possibility to differentiate output from one process from output from the others. Launching other processes with run : proctype pr(byte x){ printf("x=%d, pid = %d\n",x,_pid) init { run pr(0); run pr(1); init = declaration of a process active in the initial system state. Three processes created.
11 Processes Promela processes behave like real processes. run fork+exec. run is an operator a run statement may evaluate to false, and thus block the parent process! Number of created processes 255. run returns the PID of the launched process (like fork). Process termination = end of its code. A process can die only if all processes instantiated lated have died first.
12 Processes and the provided statement bool var = true; active proctype A() provided (var=true){ L: printf("a\n"); var = false; goto L active proctype A() provided (var=false){ L: printf("a\n"); var = true; goto L: Each process may take a step only when its provided clause holds = invariant for that process. Strict alternation
13 Data objects Data can only be global or process local. Integer data types + bits + boolean. C syntax for variable declarations. One-dimensional arrays only. mtype = list of symbolic values, range A single list for a Promela program! mtype = { A, B, C ; mtype = { 1, 2, 3 ; /* union of the two sets */ Record structures definable : typedef Field{ short f=3; byte g typedef Record{ byte a[3]; Field fld; Can be used for defining multidimensional arrays.
14 Channels Variables modeling communication channels between processes. Must be declared globally, if needed by two distinct processes. chan queue = [10] of { mtype, short, Field 10 message buffer, each message composed of 3 fields. Sending messages : queue!expr1,expr2,expr3; queue!expr1(expr2,expr3) expr1 used as message type indication. Receiving messages : queue?var1,var2,var3; queue?var1(var2,var3) Conditional reception : queue?a(var2,var3); queue?var1,100,var3 queue?eval(var1),100,var3 Execute only when first field matches value of var1.
15 Other channel operations Channel poll do not remove the message from the channel : queue?<eval(y),x> a<b && queue?[msg] /* test for message, do not remove */ Sorted send : queue!!msg /* inserted in lexicographic order */ Removing the first message matching some pattern : queue??2,var2,var3 Removes the first message whose first field is 2. len(queue) = buffer length. Also empty(queue), nempty(queue), full(queue), nfull(queue).
16 Rendezvous communication chan queue = [0] of { byte The channel has zero buffering capacity. A send can only be executed when a corresponding receive is executed at the same time by some other process. mtype = { id msg ; chan name = [0] of { mtype, byte ; active proctype A(){ name!msg(100); name!id(10); active proctype B(){ byte var; if :: name?msg(var) -> printf("state = %d", var); :: name?id(var) -> printf("value = %d", var); fi Second send is blocking in proctype A.
17 Other channel operations Channel values can be sent onto channels : chan glob = [1] of { chan ; active proctype A(){ chan loc = [1] of { byte glob!loc; loc?var; active proctype B(){ chan who; glob?who; who!100;
18 Executability Depending on system state, any statement is executable or blocked. Expressions are statements that block when evaluating to false or 0. No need for busy waiting : (a==b) /* behaves like while (a!=b) skip */ /* or like : do :: (a==b) -> break :: else -> skip od
19 Control statements and inline definitions Have seen if, do and goto. break semantics as in C. Escape sequence : { P unless { E Execute P unless first statement in E is executable. When P terminates, the whole block terminates. Can define inline macros : inline swap(x,y){ byte tmp=x; x=y; y=tmp No functions/procedures/modules. Reserved type STDIN for input: Only one message type available on STDIN : int.
20 Correctness claims The main part of Promela : placing claims on a program, that SPIN has to verify! Various types : Basic assertions. End-state labels. Progress-state labels. Accept-state labels. Never claims. Trace assertions.
21 Basic assertions The simplest way to prove properties about a program : check that at a point in the program some property holds. Basic assertion = assert(expression) : always executable. But when expression evaluates to false or 0, an error message is triggered on output (and subsequent operations are done by SPIN). Revisit the mutual exclusion example! (Basic) assertions can be as complicated as desired: assert(x=y && chan?[msg])
22 End states SPIN checks whether all processes reach terminate (i.e. reach their closing brace). Some processes are not intended to terminate : Schedulers, servers, etc. Promela allows defining ending states (i.e. statements) in a process : Not an error if the process linger in that state forever. Ending states for a process declared with labels starting with end. Example with a Dijsktra semaphore...
23 End states for Dijsktra semaphores mtype = {p, v; chan sema = [0] of { mtype ; active proctype Dijsktra(){ end: do :: (count == 1) -> sema!p; count = 0; :: (count == 0) -> sema?v; count = 1; od active [3] proctype user(){ do :: sema?p; skip; sema!v
24 Progress states We may want to check that within each cycle through system states, something desirable happens. E.g.: lack of starvation. We may label some states with progress labels. This forces SPIN to check that each infinite execution passes through one of the statements labeled with progress labels. Special command-line options needed also for gcc/cc and pan: -DNP option for the compiler. -l option for the verifier (i.e. pan).
25 Peterson algorithm with progress states bool turn, flag[2]; byte cnt; active [2] proctype proc(){ pid i,j; i=_pid; j=1- _pid; again: flag[i]=true; turn=i; (flag[j]==false turn!=i) -> progress: cnt++; assert(cnt==1); cnt--; goto again; Starvation freedom must be ensured in a correct mutual exclusion algorithm!
26 Fairness defined and checked Weak fairness : Strong fairness : If a process P reaches a point where it has an executable statement, and the executability of that statement never changes, then P should eventually proceed by executing the statement. If a process P reaches a point where it has an executable statement, and the executability of that statement occurs infinitely often from there on, then P should eventually proceed by executing the statement. Enabling weak fairness : -f option for pan.
27 Example fairness byte x; active proctype A(){ do :: x=2; progress: skip od active proctype B(){ do :: x=3; od Each fair cycle is a progress cycle! $./pan -l -f Full statespace search for:... non-progress cycles + (fairness enabled) State-vector 20 byte, depth reached 4, errors: 0
28 Never claims Used for checking properties over sequences. Each temporal logic formula can be transformed into a never claim. Never claim = complement of the LTL formula that has to be checked. A never claim is like a new process whose traces must never occur as traces of the system. Similarly to an assert, SPIN checks that there exists no run of the system which is also a run of the code inside the never claim. An example : never{ do ::!p -> break :: else od Checks that p is true in any system state.
29 Never claims and temporal logic We would like to check the following property: Every system state in which p is true eventually leads to a system state in which q holds, and in between p must remain true. An LTL formula for this: A never claim for this: never{ S0 : do :: p &&!q -> break :: true od S1 : accept: do ::!q ::!(p q) -> break od (p puq)
30 Rules for specifying never claim Only statements that do not have side effects. Hence no assignments and no channel read/write. Channel poll operations and arbitrary condition statements are allowed. Some predefined variables can be used only in never claims. Accept states = formalize Büchi acceptance conditions for the never claim!
31 Generating never claims from LTL formulas Can be generated from LTL formulas: the -f option for SPIN. Grammar : where ltl ::= bop (ltl) ltl binop ltl unop ltl bop is true or false. unop is [] (always), <> (sometimes) or! (negation). binop is U (until), V (dual of until), or the boolean operators: &&,, \/, /\, ->, <->. The -DNXT option for SPIN adds also the nexttime operator X.
32 Generating never claims for LTL formulas Example : $ spin -f []p never { /* []p */ accept_init: T0_init: if :: ((p)) -> goto T0_init fi; $ spin -f!(<> p)... $ spin -f [] (p U (q U r))... Atomic formulas p,q,r can be defined with macros in the Promela model: #define p (a<b) #define q (len(x)<5 && a==b)
33 Predefined variables and functions for never claims np is false in all system states where at least one running process is currently at a progress control-flow state. last holds the instantiation number of the process that performed the last step. pc value(pid) returns the current control state of the process having the pid. enabled(pid) tells whether process pid has at least one statement executable in the current state. procname[pid]@label returns nonzero only if the next statement that can be executed by pid is labeled with label.
34 Trace assertions Similar to never claims, but referring to message channels: trace{ do :: q1!a ; q2!b od Only simple send/receive statements (no ordering). No data objects can be declared in trace assertions. Don t care values occurring on channels can be specified with the predefined variable. May contain end states, progress states and accept states.
35 Using SPIN for bug tracing When the pan verifier generated by SPIN/gcc reports an error, it generates a trail file which shows the problem. $./pan -l -f pan: non-progress cycle (at depth 4) pan: wrote fair.pml.trail The trail file can be then interpreted by SPIN to show us the problem: $ spin -t -p fair.pml Starting A with pid 0 Starting B with pid 1 spin: couldn t find claim (ignored)... Many other options for SPIN check with spin --.
Introduction to SPIN. Acknowledgments. Parts of the slides are based on an earlier lecture by Radu Iosif, Verimag. Ralf Huuck. Features PROMELA/SPIN
Acknowledgments Introduction to SPIN Parts of the slides are based on an earlier lecture by Radu Iosif, Verimag. Ralf Huuck Ralf Huuck COMP 4152 1 Ralf Huuck COMP 4152 2 PROMELA/SPIN PROMELA (PROcess MEta
INF5140: Specification and Verification of Parallel Systems
INF5140: Specification and Verification of Parallel Systems Lecture 7 LTL into Automata and Introduction to Promela Gerardo Schneider Department of Informatics University of Oslo INF5140, Spring 2007 Gerardo
Software Engineering using Formal Methods
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
Fundamentals of Software Engineering
Fundamentals of Software Engineering Model Checking with Temporal Logic Ina Schaefer Institute for Software Systems Engineering TU Braunschweig, Germany Slides by Wolfgang Ahrendt, Richard Bubel, Reiner
Lecture 9 verifying temporal logic
Basics of advanced software systems Lecture 9 verifying temporal logic formulae with SPIN 21/01/2013 1 Outline for today 1. Introduction: motivations for formal methods, use in industry 2. Developing models
Today s Agenda. Automata and Logic. Quiz 4 Temporal Logic. Introduction Buchi Automata Linear Time Logic Summary
Today s Agenda Quiz 4 Temporal Logic Formal Methods in Software Engineering 1 Automata and Logic Introduction Buchi Automata Linear Time Logic Summary Formal Methods in Software Engineering 2 1 Buchi Automata
Formal Verification by Model Checking
Formal Verification by Model Checking Natasha Sharygina Carnegie Mellon University Guest Lectures at the Analysis of Software Artifacts Class, Spring 2005 1 Outline Lecture 1: Overview of Model Checking
MODEL CHECKING OF SERVICES WORKFLOW RECONFIGURATION: A PERSPECTIVE ON DEPENDABILITY
MODEL CHECKING OF SERVICES WORKFLOW RECONFIGURATION: A PERSPECTIVE ON DEPENDABILITY 1 Juan Carlos Polanco Aguilar 1 Koji Hasebe 1 Manuel Mazzara 2 Kazuhiko Kato 1 1 University of Tsukuba Department of
CISC422/853: Formal Methods
Outline CISC422/853: Formal Methods in Software Engineering: Computer-Aided Verification Topic 7: Specifying, or How to Describe How the System Should (or Should Not) Behave Juergen Dingel Feb, 2009 Readings:
Stylianos Basagiannis
Interlocking control by Distributed Signal Boxes Technical Report (TR) 4 Stylianos Basagiannis Supervisors: Dr Andrew Pombortsis, Dr Panagiotis Katsaros Aristotle University of Thessaloniki Department
The Model Checker SPIN
The Model Checker SPIN Author: Gerard J. Holzmann Presented By: Maulik Patel Outline Introduction Structure Foundation Algorithms Memory management Example/Demo SPIN-Introduction Introduction SPIN (Simple(
Software Quality Exercise 1
Software Quality Exercise Model Checking Information. Dates Release: 7.0.0.5pm Deadline: 07.0.0.5pm Discussion:.0.0. Formalities While this exercise can be solved and handed in in groups of three, every
Informatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
tutorial: hardware and software model checking
tutorial: hardware and software model checking gerard holzmann and anuj puri { gerard anuj } @research.bell-labs.com Bell Labs, USA outline introduction (15 mins) theory and algorithms system modeling
Formal Verification and Linear-time Model Checking
Formal Verification and Linear-time Model Checking Paul Jackson University of Edinburgh Automated Reasoning 21st and 24th October 2013 Why Automated Reasoning? Intellectually stimulating and challenging
Traditional Software Development. Model Requirements and JAVA Programs. Formal Verification & Validation. What is a state?
Mel Requirements and JAVA Programs MVP The Waterfall Mel Problem Area Traditional Software Develoment Analysis REVIEWS Design Costly wrt time and money. Errors are found too late (or maybe never). SPIN/PROMELA
Introduction. What is an Operating System?
Introduction What is an Operating System? 1 What is an Operating System? 2 Why is an Operating System Needed? 3 How Did They Develop? Historical Approach Affect of Architecture 4 Efficient Utilization
SPIN Beginners Tutorial
SPIN 2002 Workshop SPIN Beginners Tutorial Grenoble, France Thursday 11-Apr-2002 Theo C. Ruys University of Twente Formal Methods & Tools group http://www.cs.utwente.nl/~ruys Credits should go to Gerard
logic language, static/dynamic models SAT solvers Verified Software Systems 1 How can we model check of a program or system?
5. LTL, CTL Last part: Alloy logic language, static/dynamic models SAT solvers Today: Temporal Logic (LTL, CTL) Verified Software Systems 1 Overview How can we model check of a program or system? Modeling
Algorithmic Software Verification
Algorithmic Software Verification (LTL Model Checking) Azadeh Farzan What is Verification Anyway? Proving (in a formal way) that program satisfies a specification written in a logical language. Formal
Regression Verification: Status Report
Regression Verification: Status Report Presentation by Dennis Felsing within the Projektgruppe Formale Methoden der Softwareentwicklung 2013-12-11 1/22 Introduction How to prevent regressions in software
Concepts of Concurrent Computation
Chair of Software Engineering Concepts of Concurrent Computation Bertrand Meyer Sebastian Nanz Lecture 3: Synchronization Algorithms Today's lecture In this lecture you will learn about: the mutual exclusion
Formal verification of contracts for synchronous software components using NuSMV
Formal verification of contracts for synchronous software components using NuSMV Tobias Polzer Lehrstuhl für Informatik 8 Bachelorarbeit 13.05.2014 1 / 19 Problem description and goals Problem description
Verification of Agent Behavioral Models
The 2000 International Conference on Artificial Intelligence (IC-AI'2000) June 26-29, 2000 Monte Carlo Resort, Las Vegas, Nevada Verification of Agent Behavioral Models Timothy H. Lacey and Scott A. DeLoach
QUIZ-II QUIZ-II. Chapter 5: Control Structures II (Repetition) Objectives. Objectives (cont d.) 20/11/2015. EEE 117 Computer Programming Fall-2015 1
QUIZ-II Write a program that mimics a calculator. The program should take as input two integers and the operation to be performed. It should then output the numbers, the operator, and the result. (For
VeriTech - A Framework for Translating among Model Description Notations
Software Tools for Technology Transfer manuscript No. (will be inserted by the editor) VeriTech - A Framework for Translating among Model Description Notations Orna Grumberg and Shmuel Katz Computer Science
A Classification of Model Checking-based Verification Approaches for Software Models
A Classification of Model Checking-based Verification Approaches for Software Models Petra Brosch, Sebastian Gabmeyer, Martina Seidl Sebastian Gabmeyer Business Informatics Group Institute of Software
Development of dynamically evolving and self-adaptive software. 1. Background
Development of dynamically evolving and self-adaptive software 1. Background LASER 2013 Isola d Elba, September 2013 Carlo Ghezzi Politecnico di Milano Deep-SE Group @ DEIB 1 Requirements Functional requirements
http://aejm.ca Journal of Mathematics http://rema.ca Volume 1, Number 1, Summer 2006 pp. 69 86
Atlantic Electronic http://aejm.ca Journal of Mathematics http://rema.ca Volume 1, Number 1, Summer 2006 pp. 69 86 AUTOMATED RECOGNITION OF STUTTER INVARIANCE OF LTL FORMULAS Jeffrey Dallien 1 and Wendy
Mutual Exclusion using Monitors
Mutual Exclusion using Monitors Some programming languages, such as Concurrent Pascal, Modula-2 and Java provide mutual exclusion facilities called monitors. They are similar to modules in languages that
Model Checking LTL Properties over C Programs with Bounded Traces
Noname manuscript No. (will be inserted by the editor) Model Checking LTL Properties over C Programs with Bounded Traces Jeremy Morse 1, Lucas Cordeiro 2, Denis Nicole 1, Bernd Fischer 1,3 1 Electronics
Model Checking: An Introduction
Announcements Model Checking: An Introduction Meeting 2 Office hours M 1:30pm-2:30pm W 5:30pm-6:30pm (after class) and by appointment ECOT 621 Moodle problems? Fundamentals of Programming Languages CSCI
Temporal Logics. Computation Tree Logic
Temporal Logics CTL: definition, relationship between operators, adequate sets, specifying properties, safety/liveness/fairness Modeling: sequential, concurrent systems; maximum parallelism/interleaving
Tutorial on C Language Programming
Tutorial on C Language Programming Teodor Rus [email protected] The University of Iowa, Department of Computer Science Introduction to System Software p.1/64 Tutorial on C programming C program structure:
Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification
Introduction Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification Advanced Topics in Software Engineering 1 Concurrent Programs Characterized by
Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: [email protected] Alfonso Ortega: alfonso.ortega@uam.
Compilers Spring term Mick O Donnell: [email protected] Alfonso Ortega: [email protected] Lecture 1 to Compilers 1 Topic 1: What is a Compiler? 3 What is a Compiler? A compiler is a computer
An Implementation Of Multiprocessor Linux
An Implementation Of Multiprocessor Linux This document describes the implementation of a simple SMP Linux kernel extension and how to use this to develop SMP Linux kernels for architectures other than
Concurrent Programming
Concurrent Programming Principles and Practice Gregory R. Andrews The University of Arizona Technische Hochschule Darmstadt FACHBEREICH INFCRMATIK BIBLIOTHEK Inventar-Nr.:..ZP.vAh... Sachgebiete:..?r.:..\).
CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013
Oct 4, 2013, p 1 Name: CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013 1. (max 18) 4. (max 16) 2. (max 12) 5. (max 12) 3. (max 24) 6. (max 18) Total: (max 100)
Combining Software and Hardware Verification Techniques
Formal Methods in System Design, 21, 251 280, 2002 c 2002 Kluwer Academic Publishers. Manufactured in The Netherlands. Combining Software and Hardware Verification Techniques ROBERT P. KURSHAN VLADIMIR
Simple Cooperative Scheduler for Arduino ARM & AVR. Aka «SCoop»
Simple Cooperative Scheduler for Arduino ARM & AVR Aka «SCoop» Introduction Yet another library This library aims to provide a light and simple environment for creating powerful multi-threaded programs
Semantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
The Course. http://www.cse.unsw.edu.au/~cs3153/
The Course http://www.cse.unsw.edu.au/~cs3153/ Lecturers Dr Peter Höfner NICTA L5 building Prof Rob van Glabbeek NICTA L5 building Dr Ralf Huuck NICTA ATP building 2 Plan/Schedule (1) Where and When Tuesday,
Validated Templates for Specification of Complex LTL Formulas
Validated Templates for Specification of Complex LTL Formulas Salamah Salamah Department of Electrical, computer, Software, and Systems Engineering Embry Riddle Aeronautical University 600 S. Clyde Morris
Jorix kernel: real-time scheduling
Jorix kernel: real-time scheduling Joris Huizer Kwie Min Wong May 16, 2007 1 Introduction As a specialized part of the kernel, we implemented two real-time scheduling algorithms: RM (rate monotonic) and
Formal Verification of Software
Formal Verification of Software Sabine Broda Department of Computer Science/FCUP 12 de Novembro de 2014 Sabine Broda (DCC-FCUP) Formal Verification of Software 12 de Novembro de 2014 1 / 26 Formal Verification
Specification and Analysis of Contracts Lecture 1 Introduction
Specification and Analysis of Contracts Lecture 1 Introduction Gerardo Schneider [email protected] http://folk.uio.no/gerardo/ Department of Informatics, University of Oslo SEFM School, Oct. 27 - Nov.
U-HID Pac-LED64 PacDrive U-HID LEDs
Pac-LED64 PacDrive U-HID LEDs Software Development Kit 1. Introduction... 3 2. Common Functions (all boards)... 4 int PacSetCallbacks((void)(int id) attach, (void)(int id) remove)... 4 int PacInitialize()...
Pemrograman Dasar. Basic Elements Of Java
Pemrograman Dasar Basic Elements Of Java Compiling and Running a Java Application 2 Portable Java Application 3 Java Platform Platform: hardware or software environment in which a program runs. Oracle
Computer Programming Tutorial
Computer Programming Tutorial COMPUTER PROGRAMMING TUTORIAL by tutorialspoint.com tutorialspoint.com i ABOUT THE TUTORIAL Computer Prgramming Tutorial Computer programming is the act of writing computer
Static Program Transformations for Efficient Software Model Checking
Static Program Transformations for Efficient Software Model Checking Shobha Vasudevan Jacob Abraham The University of Texas at Austin Dependable Systems Large and complex systems Software faults are major
Verication by Finitary Abstraction Weizmann Institute of Sciences and Universite Joseph Fourier, Grenoble Fourth International Spin Workshop (SPIN'98) Paris 2.11.98 Joint work with: Y. Kesten Ben Gurion
Verifying Real-Time Embedded Software by Means of Automated State-based Online Testing and the SPIN Model Checker Application to RTEdge Models
Verifying Real-Time Embedded Software by Means of Automated State-based Online Testing and the SPIN Model Checker Application to RTEdge Models A thesis submitted to the Faculty of Graduate and Postdoctoral
Programming languages C
INTERNATIONAL STANDARD ISO/IEC 9899:1999 TECHNICAL CORRIGENDUM 2 Published 2004-11-15 INTERNATIONAL ORGANIZATION FOR STANDARDIZATION МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ ORGANISATION INTERNATIONALE
SystemC Tutorial. John Moondanos. Strategic CAD Labs, INTEL Corp. & GSRC Visiting Fellow, UC Berkeley
SystemC Tutorial John Moondanos Strategic CAD Labs, INTEL Corp. & GSRC Visiting Fellow, UC Berkeley SystemC Introduction Why not leverage experience of C/C++ developers for H/W & System Level Design? But
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
AUTOMATED TEST GENERATION FOR SOFTWARE COMPONENTS
TKK Reports in Information and Computer Science Espoo 2009 TKK-ICS-R26 AUTOMATED TEST GENERATION FOR SOFTWARE COMPONENTS Kari Kähkönen ABTEKNILLINEN KORKEAKOULU TEKNISKA HÖGSKOLAN HELSINKI UNIVERSITY OF
Debugging Multi-threaded Applications in Windows
Debugging Multi-threaded Applications in Windows Abstract One of the most complex aspects of software development is the process of debugging. This process becomes especially challenging with the increased
PL/SQL Overview. Basic Structure and Syntax of PL/SQL
PL/SQL Overview PL/SQL is Procedural Language extension to SQL. It is loosely based on Ada (a variant of Pascal developed for the US Dept of Defense). PL/SQL was first released in ١٩٩٢ as an optional extension
First Java Programs. V. Paúl Pauca. CSC 111D Fall, 2015. Department of Computer Science Wake Forest University. Introduction to Computer Science
First Java Programs V. Paúl Pauca Department of Computer Science Wake Forest University CSC 111D Fall, 2015 Hello World revisited / 8/23/15 The f i r s t o b l i g a t o r y Java program @author Paul Pauca
ECE 3401 Lecture 7. Concurrent Statements & Sequential Statements (Process)
ECE 3401 Lecture 7 Concurrent Statements & Sequential Statements (Process) Concurrent Statements VHDL provides four different types of concurrent statements namely: Signal Assignment Statement Simple Assignment
Chapter 6, The Operating System Machine Level
Chapter 6, The Operating System Machine Level 6.1 Virtual Memory 6.2 Virtual I/O Instructions 6.3 Virtual Instructions For Parallel Processing 6.4 Example Operating Systems 6.5 Summary Virtual Memory General
CANnes PC CAN Interface Manual
CANnes PC CAN Interface Manual Version: 1.21 October 1 st, 2004 D 20375 Hamburg, Germany Phone +49-40-51 48 06 0 FAX: +49-40-51 48 06 60 2 CANnes Card Manual V1.21 Version Version Date Author Comment 1.00
Software Model Checking: Theory and Practice
Software Model Checking: Theory and Practice Lecture: Specification Checking - LTL Model Checking Copyright 2004, Matt Dwyer, John Hatcliff, and Robby. The syllabus and all lectures for this course are
Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
CSCE 110 Programming I Basics of Python: Variables, Expressions, and Input/Output
CSCE 110 Programming Basics of Python: Variables, Expressions, and nput/output Dr. Tiffani L. Williams Department of Computer Science and Engineering Texas A&M University Fall 2011 Python Python was developed
6. Control Structures
- 35 - Control Structures: 6. Control Structures A program is usually not limited to a linear sequence of instructions. During its process it may bifurcate, repeat code or take decisions. For that purpose,
Software Verification and Testing. Lecture Notes: Temporal Logics
Software Verification and Testing Lecture Notes: Temporal Logics Motivation traditional programs (whether terminating or non-terminating) can be modelled as relations are analysed wrt their input/output
Real-Time Component Software. slide credits: H. Kopetz, P. Puschner
Real-Time Component Software slide credits: H. Kopetz, P. Puschner Overview OS services Task Structure Task Interaction Input/Output Error Detection 2 Operating System and Middleware Applica3on So5ware
A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation
PLDI 03 A Static Analyzer for Large Safety-Critical Software B. Blanchet, P. Cousot, R. Cousot, J. Feret L. Mauborgne, A. Miné, D. Monniaux,. Rival CNRS École normale supérieure École polytechnique Paris
Assignment 4 Real-world programming
University of New South Wales, SENG 2011 Software Engineering Workshop 2A 2014 Session 1 Assignment 4 Real-world programming Due Friday of Week 13, that is 6 June 2014 at 23:59 The instructions for completing
System modeling. Budapest University of Technology and Economics Department of Measurement and Information Systems
System modeling Business process modeling how to do it right Partially based on Process Anti-Patterns: How to Avoid the Common Traps of Business Process Modeling, J Koehler, J Vanhatalo, IBM Zürich, 2007.
Automata-based Verification - I
CS3172: Advanced Algorithms Automata-based Verification - I Howard Barringer Room KB2.20: email: [email protected] March 2006 Supporting and Background Material Copies of key slides (already
Keywords are identifiers having predefined meanings in C programming language. The list of keywords used in standard C are : unsigned void
1. Explain C tokens Tokens are basic building blocks of a C program. A token is the smallest element of a C program that is meaningful to the compiler. The C compiler recognizes the following kinds of
Java Memory Model: Content
Java Memory Model: Content Memory Models Double Checked Locking Problem Java Memory Model: Happens Before Relation Volatile: in depth 16 March 2012 1 Java Memory Model JMM specifies guarantees given by
A Safe Dynamic Adaptation Framework for Aspect- Oriented Software Development
Journal of Universal Computer Science, vol. 14, no. 13 (2008), 2212-2238 submitted: 31/10/07, accepted: 27/6/08, appeared: 1/07/08 J.UCS A Safe Dynamic Adaptation Framework for Aspect- Oriented Software
PROBLEM SOLVING SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON
PROBLEM SOLVING WITH SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON Addison Wesley Boston San Francisco New York London
Lumousoft Visual Programming Language and its IDE
Lumousoft Visual Programming Language and its IDE Xianliang Lu Lumousoft Inc. Waterloo Ontario Canada Abstract - This paper presents a new high-level graphical programming language and its IDE (Integration
SHARED HASH TABLES IN PARALLEL MODEL CHECKING
SHARED HASH TABLES IN PARALLEL MODEL CHECKING IPA LENTEDAGEN 2010 ALFONS LAARMAN JOINT WORK WITH MICHAEL WEBER AND JACO VAN DE POL 23/4/2010 AGENDA Introduction Goal and motivation What is model checking?
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
T-79.186 Reactive Systems: Introduction and Finite State Automata
T-79.186 Reactive Systems: Introduction and Finite State Automata Timo Latvala 14.1.2004 Reactive Systems: Introduction and Finite State Automata 1-1 Reactive Systems Reactive systems are a class of software
Alarms of Stream MultiScreen monitoring system
STREAM LABS Alarms of Stream MultiScreen monitoring system Version 1.0, June 2013. Version history Version Author Comments 1.0 Krupkin V. Initial version of document. Alarms for MPEG2 TS, RTMP, HLS, MMS,
SystemVerilog Is Getting Even Better!
by, SystemVerilog Is Getting Even Better! An Update on the Proposed 2009 SystemVerilog Standard Part 2 presented by Clifford E. Cummings Sunburst Design, Inc. [email protected] www.sunburst-design.com
Linux Driver Devices. Why, When, Which, How?
Bertrand Mermet Sylvain Ract Linux Driver Devices. Why, When, Which, How? Since its creation in the early 1990 s Linux has been installed on millions of computers or embedded systems. These systems may
