Formal Verication of Scalable NonZero Indicators
|
|
|
- Lisa Dorsey
- 10 years ago
- Views:
Transcription
1 Formal Verication of Scalable NonZero Indicators Shao Jie Zhang, Yang Liu, Jun Sun, Jin Song Dong, Yanhong A. Liu and Wei Chen National University of Singapore State University of New York at Stony Brook Microsoft Research Asia Abstract Concurrent algorithms are notoriously difcult to design correctly, and high performance algorithms that make little or no use of locks even more so. In this paper, we describe a formal verication of a recent concurrent data structure Scalable NonZero Indicators. The algorithm supports incrementing, decrementing, and querying the shared counter in an efcient and linearizable way without blocking. The algorithm is highly non-trivial and it is challenging to prove the correctness. We have proved that the algorithm satis- es linearizability, by showing a trace renement relation from the concrete implementation to its abstract specication. These models are specied in CSP and veried automatically using the model checking toolkit PAT. 1 Introduction Concurrent algorithms are notoriously difcult to design correctly, and high performance algorithms that make little or no use of locks even more so. The main correctness criterion of the concurrent algorithm design is linearizability [6]. Informally, a shared object is linearizable if each operation on the object can be understood as occurring instantaneously at some point, called linearization point, between its invocation and its response, and its behavior at that point is consistent with the specication for the corresponding sequential execution of the operation. Formal verication of linearizability is challenging because the correctness often relies on the knowledge of linearization points, which is difcult or even impossible to identify. These proofs are too long and complicated to do (and check) reliably by hand. Hence, it is important to develop techniques for mechanically performing, or at least checking, such proofs. In this paper, we present an approach to verify linearizability based on renement relations between abstract specication and concrete implementation models of a concurrent algorithm. Both are specied using an event-based modeling language, which has formal semantics based on labeled transition systems. We have used this approach to formally verify a recent concurrent algorithm Scalable NonZero Indicators (SNZI) due to Ellen et al. [5], since the algorithm as a complex and useful implementation serves a good candidate for automatic verication. Our approach also builds on earlier work [8] in which we proved (and in some cases disproved and/or improved) a number of concurrent algorithms like nonblocking stacks, nonblocking queues, K-valued Registers and Mailbox problem. We have made considerable progress in understanding how to model algorithms including specications and implementations to allow model checking to scale up and handle bigger cases. The complete model of SNZI algorithm is built inside a novel model checking tool, PAT [1] ( The rest of the paper is structured as follows. Section briey introduces the SNZI algorithm. Section 3 gives the standard denition of linearizability. Section 4 shows how to express linearizability using renement relations in general. Section 5 gives the SNZI model in our modeling language. Section 6 presents the verication and experimental results. Section 7 discusses related work and concludes. The SNZI Algorithms A SNZI object behaves similarly to traditional shared counter. It has one shared integer variable surplus and supports three operations: Arrive increments surplus by 1 when a process enters; Depart decrements surplus by 1 when the process leaves; the only difference from traditional counters is Query operation: it returns a boolean value indicating whether the value of surplus is greater than 0. We assume that each Arrive operation is always followed by a Depart operation for the same process. Therefore surplus is always greater or equal to 0. The pseudo code in Fig. 1 gives the
2 shared variable : Surplus : integer ; initially 0 bool Query() : return (Surplus > 0) void Arrive() : Surplus Surplus + 1 void Depart() : Surplus Surplus 1 Figure 1. SNZI specication specication of a SNZI object. In [5], the authors propose a rooted tree as the underlying data structure of the SNZI objects implementation. An operation on a child node may invoke operations on its parent. An important invariant is used to guarantee the correctness: the surplus of parent node is non-zero if and only if there exists at least one child whose surplus is non-zero. Thus, if the surplus of one node in the tree is non-zero, so does the root. A process begins Arrive operation on any node as long as the corresponding Depart will be invoked at the same node, and Query operation is directly invoked on the root. Every tree node has a counter X that is increased by Arrive and decreased by Depart. Since the operations on hierarchial nodes differ from those on root node, the algorithms are separated for hierarchical nodes and root node. The code for hierarchical SNZI nodes is shown in Fig. An Arrive operation on a hierarchial node invokes Arrive operation on its parent node when increasing X from 0 to 1. Otherwise, it completes without invoking any operation. Moreover, a process which increases X from 0 to 1 should rstly set X by an intermediate value 1. Any process which sees 1 must help that process to invoke parent.arrive and try to change X to 1. If a process succeeds in invoking parent.arrive but fails in setting X to 1, it will invoke a compensating parent.depart. Similarly, a Depart operation on a hierarchial node only invokes Depart on its parent node when decreasing X from 1 to 0. A version number is added to X to ensure that every change of X will be detected in both Arrive and Depart operations for hierarchial nodes as well as root node. The code for root node is shown in Fig 3. In order to reduce frequent accesses to X by Query, the solution for the root node separates out an indicator bit I from X. Hence every process can nish Query only by reading the bit I. The authors model all accesses to I using Read, Write, Load Linked and Store Conditional primitives to tolerate spurious failures when external applications try to modify I. I is set to true after a 0 to 1 transition of X, and it is unset to false after a 1 to 0 transition of X. Furthermore, an announce bit a is added to X to indicate that I needs to be set. Similar to the intermediate value 1, a process should set a during a 0 to 1 transition and clean it after setting I successfully. Any other process will also set I if it sees that a is set. Once the indicator is set, it can safely clear a to prevent unnecessary future writes to the indicator. shared variables: X = (c, v) : (N { 1 parent: scalable indicator Arrive succ false undoarr 0 while( succ) x Read(X) if x.c 1 then }, N); initially(0, 0) if CAS(X, x, (x.c + 1, x.v)) then succ true if x.c = 0 then if CAS(X, x, ( 1, x.v + 1)) then succ true x ( 1, x.v + 1) if x.c = 1 then parent.arrive if CAS(X, x, (1, x, v)) then undoarr = undoarr + 1 while(undoarr > 0) do parent.depart undoarr = undoarr 1 Depart while(true) do x Read(X) if CAS(X, x, (x.c 1, x.v)) then if x.c = 1 then parent.depart return Figure. Code for hierarchical SNZI node 3 Linearizability Linearizability [6] is a safety property of concurrent systems. It is formalized as follows. In a shared memory model M, O = {o 1,..., o k } denotes the set of k shared objects, P = {p 1,..., p n } denotes the set of n processes accessing the objects. Shared objects support a set of operations, which are pairs of invocations and matching responses. Every shared object has a set of states that it could be in. A sequential specication of a (deterministic) shared object is a function that maps every pair of invocation and object state to a pair of response and a new object state. The behavior of M is dened as H, the set of all possible sequences of invocations and responses together with the initial states of the objects. A history σ H induces an irreexive partial order < σ on operations such that op 1 < σ op if the response of op 1 occurs in σ before the invocation of op. Operations in σ that are not related by < σ are concurrent. σ is sequential iff < σ is a strict total order. Let σ i be the projection of σ on process p i, which is the subsequence of σ consisting of all invocations and re-
3 shared variables: X = (c, a, v) : (N, boolean, N); initially(0, false, 0) I : boolean; initially false Arrive repeat x Read(X) if x.c = 0 then x (1, true, x.v + 1) else x (x.c + 1, x.a, x.v) until CAS(X, x, x ) if x.a then Write(I, true) CAS(X, x, (x.c, false, x v)) Depart repeat 1. x Read(X). if CAS(X, x, (x.c 1, false, x.v)) then 3. if x.c then 4. repeat 5. LL(I) 6. if Read(X).v x.v then return 7. if SC(I, false) then return Query return Read(I) Figure 3. Code for SNZI root node sponses that are performed by p i. Let σ oi be the projection of σ on object o i, which consists of all invocations and responses of operations that are performed on object o i. A sequential history σ is legal if it respects the semantics of the objects as expressed in their sequential specications. More specically, for each object o i, if s j is the state of o i before the j-th operation op j in σ oi, then the invocation and response of op j and the resulting new state s j+1 of o i follow the sequential specication of o i. Given a history σ, a sequential permutation π of σ is a seqential history in which the set of operations as well as the initial states of the objects are the same as in σ. The formal denition of linearizability is given as follows. Linearizability There exists a sequential permutation π of σ such that 1) for each object o i, π oi is a legal sequential history (i.e. π respects the sequential specication of the objects), and ) if op 1 < σ op, then op 1 < π op (i.e., π respects the real-time ordering of operations). In every history σ, if we assign increasing time values to all invocations and responses, then every operation can be shrunk to a single time point between its invocation and response such that the operation appears to be completed instantaneously at this time point [3]. This time point for each operation is called its linearization point. Linearizability is dened in terms of the invocations and responses of high-level operations, which are implemented by algorithms on concrete shared data structures in real programs. Therefore, the execution of high-level operations may have complicated interleaving of low-level actions. Linearizability of a concrete concurrent algorithm requires that, despite of complicated low-level interleaving, the history of highlevel interface events still has a sequential permutation that respects both the real-time ordering among operations and the sequential specication of the objects. This idea is formally presented in Section 4 using renement relations. 4 Verication via Renement Checking We model concurrent systems using a process algebra, whose behavior is described using a labeled transition system. Linearizability is then dened as a renement relation from an implementation model to a specication model. 4.1 Modeling Language We introduce the relevant subset of syntax of CSP (Communicating Sequential Processes) [7] extended with shared variables. We choose this language because of its rich set of operators for concurrent communications. Process A process P is dened using the grammar: P ::= Stop Skip e{program} P P \ X P 1 ; P P 1 P if (b) {P 1 } else {P } P 1 P where P, P 1, P are processes, e is a name representing an event with an optional sequential program program, X is a set of events, and b is a Boolean expression. Stop is the process that communicates nothing, also called deadlock. Skip = Stop, where is the termination event. Event prexing e P performs e and afterwards behaves as process P. If e is attached with a sequential program, the valuation of the shared variables is updated accordingly. For simplicity, assignments are restricted to update only shared variables. Process P \ X hides all occurrences of events in X. An event is invisible iff it is explicitly hidden by the hiding operator P \ X. Sequential composition, P 1 ; P, behaves as P 1 until its termination and then behaves as P. External choice P 1 P is solved only by the occurrence of an visible event. Conditional choice if (b) {P 1 } else {P } behaves as P 1 if the Boolean expression b evaluates to true, and behaves as P otherwise. Indexed interleaving P 1 P runs all processes independently except for communication through shared variables. Processes may be recursively dened, and may have parameters (see examples later). The formal syntax and semantics of our language is presented in [11].
4 To model nonblocking algorithms, our language provides strong support for synchronization primitives, such as compare and swap (CAS) and load linked (LL)/store conditional (SC), which are elaborated as follows. CAS 1 The operational semantics of conditional choice requires that the condition evaluation and the rst event to be executed of true/false branch be nished in one atomic step. Hence CAS primitive can be directly modeled using conditional choices. / The pseudo code of CAS semantics / bool CAS(ref addr, val exp, val new) : atomically { if ( addr = exp) { addr := new; } else { } } / The CSP representation of CAS / if ( addr == old) {τ{ addr = new; } Skip} else {Skip} LL/SC In our model, a shared counter counter is added to indicate the timestamp when the content of a memory location X is modied and a counter ag is associated with each process. When LL is executed by one of the processes, the content of X is read and the value of counter is stored in the counter ag. If an external event updates X or the process executes an operation that may invalidate an atomic sequence (e.g., an exception), then counter is increased by 1. When the corresponding SC is executed, the counter ag is checked. If the ag is equal to counter, then SC will be successfully executed. Otherwise, nothing can be done. / ag[i] denotes the counter ag of process i / LL(i) = τ{read X; ags[i] = counter; } Skip; SC(i, v) = if (ags[i] == counter) {τ{x = v; counter++; } Skip} else Skip; Update(v) = τ{update X; counter++; } Skip; The semantics of a model is dened using a labeled transition system (LTS). Let Σ denote the set of all visible events and τ denote the set of all invisible events. Let Σ be the set of nite traces. Let Σ τ be Σ τ. A LTS is a 3-tuple L = (S, init, T) where S is a set of states, init S is the initial state, and T S Σ τ S is a labeled transition relation. Let s, s be states in S and e Σ τ, we write e s s to denote (s, e, s ) T. We write s e 1,e,,e n s e iff there exists s 1,, s n+1 i S such that s i si+1 for all 1 i n, s 1 = s and s n+1 = s. Let tr : Σ 1 CAS atomically compares the content of a memory location to an expected value, and if they are the same, the content of that memory location is assigned to the new given value. LL/SC are a pair of instructions. LL rst reads the current content from a memory location X. A subsequent SC stores a new value to X only if no updates have happened in between LL and SC; otherwise, it fails. be a sequence of visible events. s s iff there exists e 1, e,, e n Σ τ such that s e 1,e,,e n s. The set of traces of L is traces(l) = {tr : Σ s tr S, init s }. In this paper, we consider only LTSs with a nite number of states. In particular, we bound the sizes of variable domains by constants, which also bounds the depths of recursions. Theorem 1 (Renement). Let L im = (S im, init im, T im ) be a LTS for an implementation. Let L sp = (S sp, init sp, T sp ) be a LTS for a specication. L im renes L sp, written as L im T L sp, iff traces(l im ) traces(l sp ). 4. Linearizability This section briey shows how to create high-level linearizable specications and how to use renement relation to dene linearizability of concurrent implementations. We dene the linearizable specication LTS L sp = (S sp, init sp, T sp )for a shared object o in the following way. Every execution of an operation of o on a process includes three atomic steps: the invocation action, the linearization action, and the matching response action. The linearization action performs the computation based on the sequential specication of the object. All the invocation and response actions are visible events, while the linearization ones are invisible events. Their complete specication and transition rules in LTS is formally presented in [8]. We now consider a LTS L im = (S im, init im, T im ) that supposedly implements object o. Theorem characterizes linearizability of the implementation through renement relations. Theorem. Traces of L im are linearizable iff L im T L sp. The proof of theorem is given in [8]. The theorem shows that to verify linearizability of an implementation, it is necessary and sufcient to show that the implementation LTS is a renement of the specication LTS as we dened above. This provides the theoretical foundation of our verication of linearizability. Notice that the verication by renement given above does not require identifying low-level actions in the implementation as linearization points, which is the difcult (and sometimes even impossible) task. In fact, the verication can be automatically carried out without any special knowledge about the implementation beyond knowing the implementation code. 5 SNZI Model In order to prove that SNZI algorithm is a linearizable implementation, we model its specication and implementation in extended CSP, and then verify that the implementation renes the specication. Fig. 4 shows the abstract specication model with P processes. Process ArriveA and DepartA consist of invocation tr
5 ArriveA(i) = arrive inv.i τ{surplus++; } arrive res.i Skip; DepartA(i) = depart inv.i τ{surplus--; } depart res.i Skip; QueryA() = query.(surplus > 0) QueryA(); ProcessA(i) = ArriveA(i); DepartA(i); ProcessA(i) SNZIA() = ( x : {0..P 1}@ProcessA(x))\{τ} QueryA(); Figure 4. Abstract specication model ArriveI(p, n) = arrive inv.p if (n == 0) ArriveR(p) else Arrive(p, n); arrive res.p Skip; DepartI(p, n) = depart inv.p if (n == 0) DepartR(p) else Depart(p, n); depart res.p Skip; Process(i) = x : {0..N 1}@ (ArriveI(i, x); DepartI(i, x)); Query() = query.i Query(); SNZI() = ( x : {0..P 1}@Process(x))\{τ} Query(); Figure 5. Concrete implementation model event, linearization event τ and response event. Process QueryA recursively reads whether surplus is greater than zero or not. ProcessA models the behavior of a process, i.e., repeatedly performs an ArriveA followed by a DepartA. SNZIA 3 interleaves all ProcessAs and QueryA and hides the τ events (i.e., the linearization events). The basic structure of the implementation (the details of Arrive and Depart operations are skipped) is showed in Fig. 5. To initialize the rooted tree in the implementation, a size N array named node is created to store SNZI objects. The root is node[0], and for 0 < i < N, the parent of node[i] is node i 1. Since P processes may visit the same node concurrently, an N P array is introduced to store the local variables within an operation of P processes visiting N nodes. The full implementation model is in Appendix. A process could visit any node at any time, i.e., which node a process chooses to visit is decided by external environment. Thus, external choice is used to represent a process visiting a node randomly. ArriveI(p,n) represents the process p arriving at the node n. If n = 0 (the visiting node is the root), then it starts process ArriveR which captures how a process enters the root. Otherwise, it starts process Arrive which captures how a process arrives a hierarchical node. So does DepartI. Due to space constraints, we show the resulting code only for Depart operation at the 3 x : {1..N}@P(x) is same as P(1).. P(N), similarly for. 1. DepartR(p) =. τ{c[p] = C[0]; a[p] = A; v[p] = V[0]; } 3. if (c[p] == C[0] && a[p] == A && v[p] == V[0]){ 4. τ{c[0] = c[p] 1; A = false; V[0] = v[p]; } 5. if (c[p] > 1){τ Skip} 6. else{τ DepartLoop(p)} 7. }else{τ DepartR(p)}; 8. DepartLoop(p) = τ{counts[p] = count; } 9. if (v[p]!= V[0]) {τ Skip} 10. else{ 11. if (counts[p]!= count){τ DepartLoop(p)} 1. else{τ{i = false; count++; } Skip} 13. }; Figure 6. Depart operation on root node root in Fig. 6. The original algorithm of Depart includes two-fold loop statements. Each loop is modeled as a recursively dened process. DepartR process models the outer loop, while DepartLoop models the inner loop. The original X and x are both structured variables composed of three simple variables (represented respectively by (C, A, V) and (c, a, v)). An atomic and invisible event τ containing the assignment statements of c, a and v represents the assignment of x on line. Similar is X on line 4. For line 5, 6 and 7, another τ is added between if/else condition and the rst event of true/false branch to prevent them from executing in one atomic step. DepartLoop contains a pair of LL/SC primitives. The value of counter is recorded when performing LL (line 8). Then when the process attempts SC, it checks whether the recorded value is same as the current value of counter (line 11). If they are not equal, DepartLoop is repeatedly invoked (line 11). Otherwise, the process assigns false to I and then performs Skip event to return control to the invoking process (line 1). 6 Verication and Experimental Result Based on Theorem, automatic renement checking allows us to verify the linearizability of SNZI algorithm. PAT [10] supports different notions of renements based on different semantics. A renement checking algorithm (inspired by the one implemented in FDR [9] but extended with partial order reduction) is used to perform renement checking on-the-y. The key idea is to establish a (weak) simulation relationship from the specication to the implementation. We remark that FDR does not support shared variables/arrays, and therefore, is not easily applicable. Another candidate tool is the SPIN model checker, which supports verication of LTL properties. Nonetheless, formalization linearizability as LTL formulae results in large LTL formulae and thus not feasible for vericatoin.
6 We have experimented SNZI on PAT for different number of processes and tree nodes. The table below summarizes the results, where `-' means infeasible, and `POR' means partial order reduction. The testbed is a PC with.83ghz Intel Q9550 CPU and 4 GB memory. Setting Result without POR Result with POR #Proc #Node Time(sec) #States Time(sec) #States The number of states and running time increase rapidly with data size, and especially the number of processes. This conform to theoretical results [1]: model checking linearizability is in EXPSPACE. We have employed several optimization techniques to improve scalability. First, we use partial order reduction to effectively reduce the search space and running time. Second, we manually combined sequences of local actions into atomic blocks, such as organizing consecutive events which only cope with local variables into one single τ event. Third, we specied every operation using a minimum number of processes, in order not to generate multiple equivalent states as different parameterized processes containing the same events. Overall, our approach is effective to handle big models like SNZI. 7 Related Work and Conclusion The idea of renement has been explored by Alur, el al. [1] to show that linearizability can be cast as containment of two regular languages. Our denition of linearizability on renement is more general, regardless of the modeling language and knowledge of linearization points. Formal verication of linearizability is a much studied research area. There are various approaches in the literature. Verication using theorem provers is another approach [4], where algorithms are proved to be linearizable by using simulation between input/output automata modeling the behavior of an abstract set and the implementation. However, theorem prover based approach is not automatic. Conversion to IO automata and use of PVS require strong expertise. Wang and Stoller [14] present a static analysis that veries linearizability for an unbounded number of threads. Their approach detects certain coding patterns, hence is not complete (i.e., not applicable to SNZI algorithm). Amit et al. [] presented a shape difference abstraction that tracks the difference between two heaps. The main limitation of this approach is that users need to provide linearization points, which is generally unknown. A buggy design may have no linearization points at all. In [13], Vechev and Yahav provided two methods for linearizability checking. One method requires user annotations for linearization points. The other is fully automatic but inefcient (The worse case time is exponential in the length of the history). As a result, the number of operations they can check is only or 3. In contrast, our approach handles all possible interleaving of operations given sizes of the shared objects. In this work, we expressed linearizability using renement relation. By using this denition, we have successfully veried the SNZI algorithms for the rst time. We have shown that the renement checking algorithm behind PAT allows us to successfully verify complicated concurrent algorithms without the knowledge of linearization points. During the analysis, we have faced the infamous state explosion problem. In future, we will explore how to combine different state space reduction techniques and parameterized renement checking for innite number of processes. References [1] R. Alur, K. Mcmillan, and D. Peled. Model-checking of correctness conditions for concurrent objects. In LICS 96, pages IEEE, [] D. Amit, N. Rinetzky, T. Reps, M. Sagiv, and E. Yahav. Comparison under abstraction for verifying linearizability. In CAV 07, pages Springer, 007. [3] H. Attiya and J. Welch. Distributed Computing: Fundamentals, Simulations, and Advanced Topics. John Wiley & Sons, Inc., Publication, nd edition, 004. [4] S. Doherty, L. Groves, V. Luchangco, and M. Moir. Formal verication of a practical lock-free queue algorithm. In FORTE 04, pages Springer, 004. [5] F. Ellen, Y. Lev, V. Luchangco, and M. Moir. SNZI: Scalable NonZero Indicators. In PODC 07, pages 13, 007. [6] M. Herlihy and J. M. Wing. Linearizability: A correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst., 1(3):463 49, [7] C. A. R. Hoare. Communicating Sequential Processes. International Series in Computer Science. Prentice-Hall, [8] Y. Liu, W. Chen, Y. A. Liu, and J. Sun. Model Checking Linearizability via Renement. Technical Report MSR-TR-009-9, Microsoft Research Asia, March [9] A. W. Roscoe. The Theory and Practice of Concurrency. Prentice-Hall, [10] J. Sun, Y. Liu, and J. S. Dong. Model Checking CSP Revisited: Introducing a Process Analysis Toolkit. In ISoLA 08, pages Springer, 008. [11] J. Sun, Y. Liu, J. S. Dong, and C. Q. Chen. Integrating Specication and Programs for System Modeling and Verication. In TASE 09, 009. (Under submission). [1] J. Sun, Y. Liu, J. S. Dong, and J. Pang. PAT: Towards Flexible Verication under Fairness. In CAV 09, 009. (To appear). [13] M. Vechev and E. Yahav. Deriving linearizable ne-grained concurrent objects. In PLDI 08, pages , 008. [14] L. Wang and S. Stoller. Static analysis of atomicity for programs with non-blocking synchronization. In PPoPP 05, pages ACM Press New York, NY, USA, 005.
7 Appendix: The Complete Model of SNZI Algorithms #dene P 3; //number of processes #dene N 3; //number of nodes // Shared Variables var C[N]; //X.c in the original algorithm var V[N]; //X.v var A = false; //X.a for root node var I = false; //presence indicator // Local Variables var c[n P]; //x.c var v[n P]; //x.v var a[n P]; //x.a var c [P]; //x.c var v [P]; //x.v var a [P]; //x.a var s[n P]; //succ var u[n P]; //undoarr //for LL/SC Primitives var count; var counts[p]; // The Concrete Implementation Model ArriveI(p, n) = arrive inv.p ArriveGeneral(p, n); arrive res.p Skip; DepartI(p, n) = depart inv.p DepartGeneral(p, n); depart res.p Skip; ArriveGeneral(p, n) = if (n == 0) ArriveR(p) else Arrive(p, n); DepartGeneral(p, n) = if (n == 0) DepartR(p) else Depart(p, n); // =========== Start : This part is for root node ========== // Arrival at Root Node ArriveR(p) = τ{c[p] = C[0]; a[p] = A; v[p] = V[0]; } //x Read(X) if (c[p] == 0){τ τ{c [p] = 1; a [p] = true; v [p] = v[p] + 1; } if (c[p] == C[0]&&a[p] == A&&v[p] == V[0]){τ{C[0] = c [p]; A = a [p]; V[0] = v [p]; } R(p)} else{arriver(p)} }else{τ τ{c [p] = c[p] + 1; a [p] = a[p]; v [p] = v[p]; } if (c[p] == C[0]&&a[p] == A&&v[p] == V[0]){τ{C[0] = c [p]; A = a [p]; V[0] = v [p]; } R(p)} else{arriver(p)} }; R(p) = if (a [p] == true) {τ τ{i = true; count = count + 1; } if (C[0] == c [p]&&a == a [p]&&v[0] == v [p]){τ{c[0] = c [p]; A = false; V[0] = v [p]; } Skip} else{τ Skip} }else{τ Skip}; // Departure from Root Node DepartR(p) = τ{c[p] = C[0]; a[p] = A; v[p] = V[0]; } if (c[p] == C[0]&&a[p] == A&&v[p] == V[0]) //if CAS(X, x, (x.c 1, false, x.v)) {τ{c[0] = c[p] 1; A = false; V[0] = v[p]; } if (c[p] > 1){τ Skip} else{τ DepartLoop(p)} }else{τ DepartR(p)}; DepartLoop(p) = τ{counts[p] = count; } //LL(I) if (v[p]! = V[0]){τ Skip} else{if (counts[p]! = count){τ DepartLoop(p)} else{τ{i = false; count = count + 1; } Skip}};
8 // ====== = ===== Start : Hierarchical SNZI Node =========== // Arrival at Hierarchical SNZI Node Arrive(p, n) = τ{s[n P + p] = false; u[n P + p] = 0; } ArriveL1(p, n); ArriveL(p, n); Skip; 1 // can not be expressed in CSP, therefore the value of X.c will be increased as two times as the original. ArriveL1(p, n) = if (!s[n P + p]) {τ τ{c[n P + p] = C[n]; v[n P + p] = V[n]; } if (c[n P + p] > 1)//if x.c >= 1 then {τ if (c[n P + p] == C[n]&&v[n P + p] == V[n]) {τ{c[n] = c[n P + p] + ; V[n] = v[n P + p]; } τ{s[n P + p] = true; } Case(p, n) }else{τ Case(p, n)} }else{τ Case(p, n)} }else{τ Skip}; Case(p, n) = if (c[n P + p] == 0) //if x.c = 0 then {τ //if CAS(X, x, (x.c + 1, x.v)) then if (c[n P + p] == C[n]&&v[n P + p] == V[n]) // if CAS(X, x, ( 1, x.v + 1)) then {τ{c[n] = 1; V[n] = v[n P + p] + 1; } τ{s[n P + p] = true; } τ{c[n P + p] = 1; v[n P + p] = v[n P + p] + 1; } Case3(p, n) }else{τ Case3(p, n)} }else{τ Case3(p, n)}; Case3(p, n) = if (c[n P + p] == 1) {τ ArriveGeneral(p, (n 1)/); if (c[n P + p] == C[n]&&v[n P + p] == V[n]) {τ{c[n] = ; V[n] = v[n P + p]; } ArriveL1(p, n)} else{τ τ{u[n P + p] = u[n P + p] + 1; } ArriveL1(p, n)} }else{τ ArriveL1(p, n)}; ArriveL(p, n) = if (u[n P + p] > 0){τ DepartGeneral(p, (n 1)/); τ{u[n P + p] = u[n P + p] 1; } ArriveL(p, n)}else{τ Skip}; // Departure from Hierarchical SNZI Node Depart(p, n) = τ{c[n P + p] = C[n]; v[n P + p] = V[n]; } if (c[n P + p] == C[n]&&v[n P + p] == V[n]) //if CAS(X, x, (x.c 1, x.v)) then {τ{c[n] = c[n P + p] ; V[n] = v[n P + p]; } if (c[n P + p] == ){τ DepartGeneral(p, (n 1)/); Skip} else{τ Skip} }else{τ Depart(p, n)}; Process(i) = ( x : {0..N 1}@(ArriveI(i, x); DepartI(i, x)); Query() = query.i Query(); SNZI() = ( x : {0..P 1}@Process(x))\{τ} Query(); // Abstract Specication Model var surplus = 0; ArriveA(i) = arrive inv.i τ{surplus = surplus + 1; } arrive res.i Skip; DepartA(i) = depart inv.i τ{surplus = surplus 1; } depart res.i Skip; ProcessA(i) = ArriveA(i); DepartA(i); QueryA() = query.(surplus > 0) QueryA(); SNZIAbs() = ( x : 0..P 1@ProcessA(x))\{τ} QueryA(); // Renement Checking #assert SNZI() renes SNZIAbs();
Software Modeling and Verification
Software Modeling and Verification Alessandro Aldini DiSBeF - Sezione STI University of Urbino Carlo Bo Italy 3-4 February 2015 Algorithmic verification Correctness problem Is the software/hardware system
MODEL CHECKING CONCURRENT AND REAL-TIME SYSTEMS: THE PAT APPROACH. LIU YANG (B.Sc. (Hons.), NUS)
MODEL CHECKING CONCURRENT AND REAL-TIME SYSTEMS: THE PAT APPROACH LIU YANG (B.Sc. (Hons.), NUS) A THESIS SUBMITTED FOR THE DEGREE OF DOCTOR OF PHILOSOPHY DEPARTMENT OF COMPUTER SCIENCE NATIONAL UNIVERSITY
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
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
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
Testing LTL Formula Translation into Büchi Automata
Testing LTL Formula Translation into Büchi Automata Heikki Tauriainen and Keijo Heljanko Helsinki University of Technology, Laboratory for Theoretical Computer Science, P. O. Box 5400, FIN-02015 HUT, Finland
Static Analysis of Atomicity for Algorithms Using Non-Blocking. Synchronization
Static Analysis of Atomicity for Algorithms Using Non-Blocking Synchronization Liqiang Wang and Scott D. Stoller Abstract In concurrent programming, non-blocking synchronization is very efficient but difficult
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
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Bounded Cost Algorithms for Multivalued Consensus Using Binary Consensus Instances
Bounded Cost Algorithms for Multivalued Consensus Using Binary Consensus Instances Jialin Zhang Tsinghua University [email protected] Wei Chen Microsoft Research Asia [email protected] Abstract
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
Pretty-big-step semantics
Pretty-big-step semantics Arthur Charguéraud INRIA October 2012 1 / 34 Motivation Formalization of JavaScript with Sergio Maeis, Daniele Filaretti, Alan Schmitt, Martin Bodin. Previous work: Semi-formal
GameTime: A Toolkit for Timing Analysis of Software
GameTime: A Toolkit for Timing Analysis of Software Sanjit A. Seshia and Jonathan Kotker EECS Department, UC Berkeley {sseshia,jamhoot}@eecs.berkeley.edu Abstract. Timing analysis is a key step in the
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
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
InvGen: An Efficient Invariant Generator
InvGen: An Efficient Invariant Generator Ashutosh Gupta and Andrey Rybalchenko Max Planck Institute for Software Systems (MPI-SWS) Abstract. In this paper we present InvGen, an automatic linear arithmetic
A simple algorithm with no simple verication
A simple algorithm with no simple verication Laszlo Csirmaz Central European University Abstract The correctness of a simple sorting algorithm is resented, which algorithm is \evidently wrong" at the rst
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
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
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
Formal Verification Coverage: Computing the Coverage Gap between Temporal Specifications
Formal Verification Coverage: Computing the Coverage Gap between Temporal Specifications Sayantan Das Prasenjit Basu Ansuman Banerjee Pallab Dasgupta P.P. Chakrabarti Department of Computer Science & Engineering
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
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
Introduction to Promela and SPIN. LACL, Université Paris 12
Introduction to Promela and SPIN LACL, Université Paris 12 Promela = Process Meta Language A specification language! No programming language! Used for system description : Specify an abstraction of the
Rigorous Software Development CSCI-GA 3033-009
Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 11 Semantics of Programming Languages Denotational Semantics Meaning of a program is defined as the mathematical
Brewer s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services
Brewer s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services Seth Gilbert Nancy Lynch Abstract When designing distributed web services, there are three properties that
OPTIMIZATION STRATEGY OF CLOUD COMPUTING SERVICE COMPOSITION RESEARCH BASED ON ANP
OPTIMIZATION STRATEGY OF CLOUD COMPUTING SERVICE COMPOSITION RESEARCH BASED ON ANP Xing Xu School of Automation Huazhong University of Science and Technology Wuhan 430074, P.R.China E-mail: [email protected]
Investigating a File Transfer Protocol Using CSP and B
Noname manuscript No. (will be inserted by the editor) Investigating a File Transfer Protocol Using CSP and B Neil Evans, Helen Treharne Department of Computer Science, Royal Holloway, University of London
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
Using Patterns and Composite Propositions to Automate the Generation of Complex LTL
University of Texas at El Paso DigitalCommons@UTEP Departmental Technical Reports (CS) Department of Computer Science 8-1-2007 Using Patterns and Composite Propositions to Automate the Generation of Complex
Fair Model Checking with Process Counter Abstraction
Fair Model Checking with Process Counter Abstraction Jun Sun, Yang Liu, Abhik Roychoudhury, Shanshan Liu and Jin Song Dong School of Computing, National University of Singapore {sunj,liuyang,abhik,liushans,dongjs}@comp.nus.edu.sg
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
A Framework for the Semantics of Behavioral Contracts
A Framework for the Semantics of Behavioral Contracts Ashley McNeile Metamaxim Ltd, 48 Brunswick Gardens, London W8 4AN, UK [email protected] Abstract. Contracts have proved a powerful concept
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
Using semantic properties for real time scheduling
Using semantic properties for real time scheduling Christian Fotsing, Annie Geniet LISI, ENSMA 1 Av. Clement Ader BP 40109-86961 Futuroscope Chasseneuil-France [email protected], [email protected]
QMC: A Model Checker for Quantum Systems
QMC: A Model Checker for Quantum Systems Simon J. Gay 1, Rajagopal Nagarajan 2, and Nikolaos Papanikolaou 2 1 Department of Computing Science, University of Glasgow [email protected] 2 Department of
Model Checking of Software
Model Checking of Software Patrice Godefroid Bell Laboratories, Lucent Technologies SpecNCheck Page 1 August 2001 A Brief History of Model Checking Prehistory: transformational programs and theorem proving
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(
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,
Chapter 4 Multi-Stage Interconnection Networks The general concept of the multi-stage interconnection network, together with its routing properties, have been used in the preceding chapter to describe
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
µz An Efficient Engine for Fixed points with Constraints
µz An Efficient Engine for Fixed points with Constraints Kryštof Hoder, Nikolaj Bjørner, and Leonardo de Moura Manchester University and Microsoft Research Abstract. The µz tool is a scalable, efficient
A Typing System for an Optimizing Multiple-Backend Tcl Compiler
The following paper was originally published in the Proceedings of the Fifth Annual Tcl/Tk Workshop Boston, Massachusetts, July 1997 A Typing System for an Optimizing Multiple-Backend Tcl Compiler Forest
PROPERTECHNIQUEOFSOFTWARE INSPECTIONUSING GUARDED COMMANDLANGUAGE
International Journal of Computer ScienceandCommunication Vol. 2, No. 1, January-June2011, pp. 153-157 PROPERTECHNIQUEOFSOFTWARE INSPECTIONUSING GUARDED COMMANDLANGUAGE Neeraj Kumar Singhania University,
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
Introduction to Formal Methods. Các Phương Pháp Hình Thức Cho Phát Triển Phần Mềm
Introduction to Formal Methods Các Phương Pháp Hình Thức Cho Phát Triển Phần Mềm Outline Introduction Formal Specification Formal Verification Model Checking Theorem Proving Introduction Good papers to
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
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?
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
Lecture 2: Universality
CS 710: Complexity Theory 1/21/2010 Lecture 2: Universality Instructor: Dieter van Melkebeek Scribe: Tyson Williams In this lecture, we introduce the notion of a universal machine, develop efficient universal
IMPROVING PERFORMANCE OF RANDOMIZED SIGNATURE SORT USING HASHING AND BITWISE OPERATORS
Volume 2, No. 3, March 2011 Journal of Global Research in Computer Science RESEARCH PAPER Available Online at www.jgrcs.info IMPROVING PERFORMANCE OF RANDOMIZED SIGNATURE SORT USING HASHING AND BITWISE
Integrating Pattern Mining in Relational Databases
Integrating Pattern Mining in Relational Databases Toon Calders, Bart Goethals, and Adriana Prado University of Antwerp, Belgium {toon.calders, bart.goethals, adriana.prado}@ua.ac.be Abstract. Almost a
A Model-driven Approach to Predictive Non Functional Analysis of Component-based Systems
A Model-driven Approach to Predictive Non Functional Analysis of Component-based Systems Vincenzo Grassi Università di Roma Tor Vergata, Italy Raffaela Mirandola {vgrassi, mirandola}@info.uniroma2.it Abstract.
How To Write A Multi Threaded Software On A Single Core (Or Multi Threaded) System
Multicore Systems Challenges for the Real-Time Software Developer Dr. Fridtjof Siebert aicas GmbH Haid-und-Neu-Str. 18 76131 Karlsruhe, Germany [email protected] Abstract Multicore systems have become
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
A logical approach to dynamic role-based access control
A logical approach to dynamic role-based access control Philippe Balbiani Yannick Chevalier Marwa El Houri Abstract Since its formalization RBAC has become the yardstick for the evaluation of access control
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.
Modeling and Validation of a Data Process Unit Control for Space Applications
Modeling and Validation of a Data Process Unit Control for Space Applications Wan Hai, Huang Chongdi, Wang Yuhui, He Fei and Gu Ming Key Lab of ISS of MOE, TNList, School of Software, Tsinghua University,
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
[Refer Slide Time: 05:10]
Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture
Chapter 1: Key Concepts of Programming and Software Engineering
Chapter 1: Key Concepts of Programming and Software Engineering Software Engineering Coding without a solution design increases debugging time - known fact! A team of programmers for a large software development
Write Barrier Removal by Static Analysis
Write Barrier Removal by Static Analysis Karen Zee and Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 {kkz, [email protected] ABSTRACT We present
Chapter 13: Query Processing. Basic Steps in Query Processing
Chapter 13: Query Processing! Overview! Measures of Query Cost! Selection Operation! Sorting! Join Operation! Other Operations! Evaluation of Expressions 13.1 Basic Steps in Query Processing 1. Parsing
Solution of Linear Systems
Chapter 3 Solution of Linear Systems In this chapter we study algorithms for possibly the most commonly occurring problem in scientific computing, the solution of linear systems of equations. We start
0 0-10 5-30 8-39. Rover. ats gotorock getrock gotos. same time compatibility. Rock. withrover 8-39 TIME
Verication of plan models using UPPAAL Lina Khatib 1, Nicola Muscettola, and Klaus Havelund 2 NASA Ames Research Center, MS 269-2 Moett Field, CA 94035 1 QSS Group, Inc. 2 RECOM Technologies flina,mus,[email protected]
ML for the Working Programmer
ML for the Working Programmer 2nd edition Lawrence C. Paulson University of Cambridge CAMBRIDGE UNIVERSITY PRESS CONTENTS Preface to the Second Edition Preface xiii xv 1 Standard ML 1 Functional Programming
Atomicity for Concurrent Programs Outsourcing Report. By Khilan Gudka <[email protected]> Supervisor: Susan Eisenbach
Atomicity for Concurrent Programs Outsourcing Report By Khilan Gudka Supervisor: Susan Eisenbach June 23, 2007 2 Contents 1 Introduction 5 1.1 The subtleties of concurrent programming.......................
Lecture 1: Course overview, circuits, and formulas
Lecture 1: Course overview, circuits, and formulas Topics in Complexity Theory and Pseudorandomness (Spring 2013) Rutgers University Swastik Kopparty Scribes: John Kim, Ben Lund 1 Course Information Swastik
Updating Action Domain Descriptions
Updating Action Domain Descriptions Thomas Eiter, Esra Erdem, Michael Fink, and Ján Senko Institute of Information Systems, Vienna University of Technology, Vienna, Austria Email: (eiter esra michael jan)@kr.tuwien.ac.at
6.852: Distributed Algorithms Fall, 2009. Class 2
.8: Distributed Algorithms Fall, 009 Class Today s plan Leader election in a synchronous ring: Lower bound for comparison-based algorithms. Basic computation in general synchronous networks: Leader election
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.
Real Time Programming: Concepts
Real Time Programming: Concepts Radek Pelánek Plan at first we will study basic concepts related to real time programming then we will have a look at specific programming languages and study how they realize
Measuring the Performance of an Agent
25 Measuring the Performance of an Agent The rational agent that we are aiming at should be successful in the task it is performing To assess the success we need to have a performance measure What is rational
Towards Optimal Firewall Rule Ordering Utilizing Directed Acyclical Graphs
Towards Optimal Firewall Rule Ordering Utilizing Directed Acyclical Graphs Ashish Tapdiya and Errin W. Fulp Department of Computer Science Wake Forest University Winston Salem, NC, USA nsg.cs.wfu.edu Email:
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
Model Checking II Temporal Logic Model Checking
1/32 Model Checking II Temporal Logic Model Checking Edmund M Clarke, Jr School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 2/32 Temporal Logic Model Checking Specification Language:
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
U.C. Berkeley CS276: Cryptography Handout 0.1 Luca Trevisan January, 2009. Notes on Algebra
U.C. Berkeley CS276: Cryptography Handout 0.1 Luca Trevisan January, 2009 Notes on Algebra These notes contain as little theory as possible, and most results are stated without proof. Any introductory
Static Analysis. Find the Bug! 15-654: Analysis of Software Artifacts. Jonathan Aldrich. disable interrupts. ERROR: returning with interrupts disabled
Static Analysis 15-654: Analysis of Software Artifacts Jonathan Aldrich 1 Find the Bug! Source: Engler et al., Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions, OSDI
Facing the Challenges for Real-Time Software Development on Multi-Cores
Facing the Challenges for Real-Time Software Development on Multi-Cores Dr. Fridtjof Siebert aicas GmbH Haid-und-Neu-Str. 18 76131 Karlsruhe, Germany [email protected] Abstract Multicore systems introduce
How To Test Automatically
Automated Model-Based Testing of Embedded Real-Time Systems Jan Peleska [email protected] University of Bremen Bieleschweig Workshop 7 2006-05-05 Outline Technologie-Zentrum Informatik Objectives Basic concepts
Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students
Eastern Washington University Department of Computer Science Questionnaire for Prospective Masters in Computer Science Students I. Personal Information Name: Last First M.I. Mailing Address: Permanent
MEMORY MODEL SENSITIVE ANALYSIS OF CONCURRENT DATA TYPES. Sebastian Burckhardt. Computer and Information Science
MEMORY MODEL SENSITIVE ANALYSIS OF CONCURRENT DATA TYPES Sebastian Burckhardt A DISSERTATION in Computer and Information Science Presented to the Faculties of the University of Pennsylvania in Partial
On the Modeling and Verification of Security-Aware and Process-Aware Information Systems
On the Modeling and Verification of Security-Aware and Process-Aware Information Systems 29 August 2011 What are workflows to us? Plans or schedules that map users or resources to tasks Such mappings may
Bounded Treewidth in Knowledge Representation and Reasoning 1
Bounded Treewidth in Knowledge Representation and Reasoning 1 Reinhard Pichler Institut für Informationssysteme Arbeitsbereich DBAI Technische Universität Wien Luminy, October 2010 1 Joint work with G.
Why? A central concept in Computer Science. Algorithms are ubiquitous.
Analysis of Algorithms: A Brief Introduction Why? A central concept in Computer Science. Algorithms are ubiquitous. Using the Internet (sending email, transferring files, use of search engines, online
Synchronization. Todd C. Mowry CS 740 November 24, 1998. Topics. Locks Barriers
Synchronization Todd C. Mowry CS 740 November 24, 1998 Topics Locks Barriers Types of Synchronization Mutual Exclusion Locks Event Synchronization Global or group-based (barriers) Point-to-point tightly
