Simulation of Timed Input/Output Automata

Size: px
Start display at page:

Download "Simulation of Timed Input/Output Automata"

Transcription

1 Simulation of Timed Input/Output Automata M.Eng Thesis Proposal Panayiotis P. Mavrommatis December 13, 2005

2 Abstract This proposal describes the design of the TIOA Simulator, a vital component of the TIOA Project, which aims to provide a framework for designing and implementing dependable distributed systems. The project is based on the Timed Input/Output Automaton framework, and supports TIOA, a formal language for specifying Timed I/O Automata. Simulation of TIOA can be used to test the proposed model and find any problems associated with it, gain a better understanding of the system and its various interactions, develop strategies that would lead to proofs of correctness and extract performance predictions. The proposed TIOA Simulator will provide support for simulation of primitive automata, simultaneous simulation of two automata and validation of simulation relations, as well as simulation of composite automata.

3 1 Introduction 1.1 Background Designing and implementing dependable distributed systems is a challenging problem. With many mission-critical applications running in distributed environments, such as air traffic control or road traffic management, where correctness and fault-tolerance is required, as well as a range of distributed applications that may also require performance, availability and fault-tolerance guarantees, the problem becomes significant. On the other hand, as systems become increasingly complex, providing these guarantees becomes harder. To cope with these challenges researchers have developed mathematical models that provide frameworks in which formal specification as well as proofs of correctness can be performed in a structured and effective manner. One of these frameworks is the Timed Input/Output Automaton framework[6], in which the basic building blocks are state machines with both discrete and continuous actions. This framework has evolved from the Input/Output Automaton model[7], in which only discrete actions are allowed. The I/O Automaton model was used in a number of research papers and books in order to specify and verify several distributed algorithms without timing guarantees. The model has been supported by a formal language, IOA[4], and a number of software tools that aimed to check the IOA specifications, simulate IOA executions[2, 8, 3, 14, 9], connect IOA to various theorem provers[1, 13], as well as compile IOA to Java [10, 12] and thus provide a method to implement IOA in a distributed environment, while preserving the properties proved about the system. Recently a formal language in which Timed I/O Automata can be specified has been developed[5]. The language, called TIOA, is a natural extension of IOA. In an effort to provide a similar set of tools for TIOA as for IOA, we have started extending some of the IOA tools to support TIOA. The Syntax and Semantics Checker tool, the PVS Theorem Prover Translator and the Simulator are the three main tools that will first be extended for this purpose. This Master s Thesis proposal describes the design and implementation of the latter tool, the TIOA Simulator. Once available, these tools can be used to design and formally specify distributed systems. The system can be specified with the help of the TIOA Checker, tested and analyzed with the TIOA Simulator, and be verified using the interface to the PVS theorem prover. The TIOA Simulator s main purpose can be summarized as follows: The TIOA Simulator can be used to create and simulate specific test-case executions, which can provide feedback about the model s correctness and show potential pitfalls. Proposed invariants which can be used in proofs of correctness (both safety and liveness) can be verified to hold throughout the executions. 1

4 The TIOA Simulator can test the interaction of the various system components by either creating specific test-case executions among the components or by running each component independently. Once again, invariants can be tested to hold throughout such executions. The TIOA Simulator can be used to test proposed simulation relations, which are useful parts of many correctness proofs, especially when the system tested is proposed to simulate another, lower-level system. This is common when a high-level specification of the system is first verified, and a lower-level implementation is verified by relating the two versions of the system. Similarly, simulation relations are used to relate an optimized version of an algorithm against a simple but inefficient version, which is also easier to verify. 1.2 Mathematical Framework The essence of TIOA and its tools lies on the mathematical framework of the Timed Input/Output Automaton Model[6]. A Timed I/O Automaton is a state machine that can take both discrete transitions and follow trajectories. Discrete transitions modify the automaton s state instantly, while trajectories specify how the state evolves with time. Transitions are either internal or external; internal transitions are not visible to the automaton s environment, while external ones are. External transitions can be either output or input ones; input transitions model inputs to the system and are always enabled. Internal and output actions may have preconditions that specify under what conditions of the state they are enabled. The externally visible behavior of an automaton, its trace is a sequence of alternating external actions and time-passage steps. Composition: A complex distributed system can be represented by composing automata that model individual parts of the system. A typical client-server application, for example, can be modeled by a composition of the client automaton, the server automaton and the channel automaton that represents the network link. Abstraction: A common practice in reasoning about complex systems is to provide an abstract specification of the system along with the concrete implementation. Two separate automata can be used to specify both descriptions, and the concrete automaton can be shown to implement the abstract one using the notion of simulation relations. Simulation Relation Given a concrete automaton A and an abstract automaton B, one can show that A implements B if there exists a forward simulation from A to B, which is defined as a relation R between the states of A and B such that Every start state x of A is related to some start state y of B ( x. y.xry) 2

5 For each step a in A, starting from state x and ending in state x, there is a sequence of steps b in B, starting with y and ending in y such that 1.3 TIOA Language and Tools xry [trace(a) = trace(b)] x Ry The TIOA Language[5] is a formal and programming language that can be used to specify Timed I/O Automata. The basic building block in the language is the automaton, which is specified by its signature (discrete action declarations), state (state variables), transitions (discrete action definitions) and trajectories (continuous action definitions). Figure 1 shows an example automaton written in TIOA. automaton A signature output a(i: Int ) states x: Int := 0, now : Real := 0 transitions output a( i) e f f x := choose y where y > 5 y < 10 t r a j e c t o r i e s trajdef timepass invariant x > 5 stop when now = 10 evolve d( now ) = 1 Figure 1: An example of a TIOA program Once complete, the TIOA Toolkit will contains tools that support TIOA: Static and Semantic Checker The TIOA Checker, also called the TIOA Front-End can be used to check whether the specification follows the TIOA syntax and semantics, Simulator The TIOA Simulator, for simulating the system s execution and for checking invariants and simulation relations, Interface to Model Checking Tool For checking the system by exhaustive execution or execution over a finite number of steps, and Interface to Theorem Prover Tool For verifying the model s correctness and other properties. 3

6 2 Design The ability to simulate TIOA programs is particularly useful. First, the simulator can test the proposed model of the system and reveal any possible problems with it. Furthermore, simulations can provide a better understanding of the system, and help develop strategies about proofs of correctness. Finally, the simulator s trace can be used to extract possible performance predictions.to accomplish these goals, the TIOA Simulator should: Provide simulation of primitive automata, Provide simulation of composite automata, and Provide paired simulations of two related automata. Ideally, any TIOA program could automatically run through the Simulator without any modifications. There are, however, four main sources of problems that can be hard to automatically solve in general: 1. Differential equations in evolve predicates and existential and universal quantifiers in other predicates, 2. Nondeterminism, either from the scheduling of actions and trajectories or from choose statements, 3. Data type implementations from the abstract data type definitions, and 4. Discovering the step correspondence of two automata related by a simulation relation. Our solution to the above problems is to restrict the language to a simulatable subset and let the user resolve these problems on a case-by-case basis. In particular, we 1. Restrict TIOA to programs that can be simulated, 2. Extend TIOA with syntax that can be used to resolve nondeterminism and specify simulation relations, and 3. Provide a number of data type implementations and a way for the user to create implementations for new data types. 2.1 Restricting TIOA The TIOA Simulator admits a subset of the TIOA language as its specification language, the TIOA-sim language. TIOA-sim imposes some restrictions on the trajectory definitions and on quantifiers. In particular, we restrict the form of differential equations in evolve clauses and the predicates that are used in stopping conditions so that the simulator can compute the value of a Real variable that is reached as a result of following a trajectory and 4

7 detect the violation of stopping conditions. The differential equations to be supported will be of the form d(v) = c, where v is a continuous variable of type Real or AugmentedReal (same as Real with support for positive infinity) and c is a constant literal number. The predicates in the stopping conditions can only be disjunctions of (v = c) where v is a continuous variable of type Real or AugmentedReal and c is a constant literal number. Moreover, no existential or universal quantifiers are allowed in TIOA-sim, unless the quantified variables are of type enumeration. Finally, for loops are allowed only over finite sets. 2.2 Resolving Nondeterminism Nondeterminism is a significant trade-off in a distributed system framework. Allowing nondeterminism usually results in simpler verification techniques. On the other hand, nondeterminism makes automatic simulation and compilation of TIOA harder. TIOA includes three fundamental sources of nondeterminism: 1. The scheduling of actions, 2. The scheduling of trajectories, and 3. The nondeterministic choices involving choose statements, choose parameters and choose expressions in initial assignments. For example, statements like x := choose y where f( y) are in general hard to automatically compute. The TIOA Simulator provides a mechanism for resolving nondeterminism by letting the user specify which choice is made at any point explicitly. This mechanism is an extension to the TIOA Language called the Non-Determinism Resolution language (NDR), and is derived from the NDR language used in IOA[3]. NDR can be used to schedule actions and trajectories as well as to resolve choose statements. Figure 2 shows an example usage of NDR for the automaton A in Figure 1. In a later section we show that NDR is reused to specify the step correspondence for paired simulations. The Simulator executes the schedule block as one would expect, by going through the program and attempting to execute each statement. Conditionals, assignments and loops are executed as usual. fire statements are executed by checking the preconditions of the transition and then executing the effect program of the transition. follow statements are executed by computing the final values of the continuous variables at the end of the trajectory. The simulator then checks that the stopping conditions will not be violated with these values and that the invariants of the trajectory will hold with both the initial and the final values of the continuous variables. If none of the stopping conditions and invariants are violated, the final values are assigned to the continuous variables and execution resumes in the schedule block. 5

8 automaton A signature output a(i: Int ) states x: Int := 0, now : Real := 0 transitions output a( i) e f f x := choose y where y > 5 y < 10 yield 7 t r a j e c t o r i e s trajdef timepass invariant x > 5 stop when now = 10 evolve d( now ) = 1 schedule do f i r e output a (0); follow timepass duration 10 od Figure 2: Example of NDR extension to TIOA for automaton A of Figure 1. NDR is used to resolve the choose statement (with an explicit yield statement) and to resolve the scheduling of transitions and trajectories with the schedule block. In this particular example, action a will be fired first, with the value 0 for its i parameter, and with the value 7 for x. Then trajectory timepass will be followed for 10 time units. Note that checking that the invariants hold only at the beginning and at the end of the time-passage event does not guarantee that the invariant holds throughout the event. In general it is impossible to guarantee this unless we restrict the form of the invariants. Instead, we have chosen to allow arbitrary invariants and warn the user that the invariants are tested only at the beginning and at the end of each time-passage event. For simple invariants of the type v op c where v is a continuous variable, c is a constant and op is a comparison operator such as <, <=, =, >=, >, testing only the beginning and the end of the event actually does guarantee that the invariant holds. Scheduling inputs There are two alternatives to the scheduling of input actions. The first one, which is what the IOA Simulator has been following, allows for input actions to be scheduled, and acts differently depending on whether the action has a corresponding output one in another component. If it does not, then the action is executed normally. If it does, then the input action is simply ignored, because it will be executed automatically when the corresponding output action will be scheduled. The second alternative is to disallow firing of input actions overall. This makes the semantics of composite simulation simpler, since the simulator will not ignore any scheduled actions. On the other hand, this restriction will almost always require composition of every automaton with input actions with an Environment automaton with the corresponding actions as output ones and a schedule for when to fire these actions. This is not an unreasonable requirement since it fits 6

9 well with the theoretical model and with the notion that input actions are always enabled and not controlled by the automaton itself; allowing input actions to be scheduled by an automaton can be considered a violation of this principle. In this Master s thesis I plan to evaluate the two alternatives based on their fitness to the theoretical model and usability, before choosing and implementing one of them. 2.3 Implementing Data Types The Toolkit provides a large number of standard data types, from Integer, Real, String, to more complex data types such as Map, Array, Sequence, Queue, Stack, Binary Search Tree, Enumerations, Unions, Tuples etc. The supplied data types are sufficient for most situations, and can be easily modified to fit more specific purposes. Moreover, TIOA provides syntax for specifying new (non built-in) data types and operators, and the TIOA Simulator provides a way for the user to implement these data types in Java, and instruct the Simulator to find these implementations. 2.4 Providing Step Correspondences The TIOA Simulator can be used to test simulation relations. For this purpose, the TIOA Simulator allows the user to specify a candidate simulation relation between two automata A and B, as well as a set of step correspondences, of the following form: For each transition a of the low-level automaton, execute a sequence of actions of the high-level one. For each trajectory t of the low-level automaton, execute sequence of trajectories and internal transitions of the high-level one. The Simulator will then execute the automata together, check that the simulation relation holds and that the external behavior of the two automata is the same. A schedule block in the low-level automaton drives the execution. For each action and trajectory about to be executed in the low-level automaton, the corresponding sequence of actions and trajectories is found (with the help of the step correspondence) and executed in the high-level automaton as well. Figure 3 shows an example of a simulation relation from an automaton Low to an automaton High which is actually identical to Low in functionality. 2.5 Composite Simulation The ability to simulate a system that consists of more than one component is essential in the process of evaluating the correctness, fault tolerance and availability of a system. In other words, the TIOA Simulator must provide a way in which a composite automaton is simulated. One possibility is to require the users to expand a composite automaton, 7

10 automaton High signature output high states u: Bool := false, now : Real := 0 transitions output high e f f u := true t r a j e c t o r i e s trajdef t_high evolve d( now ) = 1 automaton Low signature output low states t: Bool := false, now : Real := 0 transitions output low e f f t := true t r a j e c t o r i e s trajdef t_low evolve d( now ) = 1 schedule do f i r e output low ; follow t_low duration 2 od forward simulation from Low to High : Low.t = High.u proof i n i t i a l l y u := t for output low do f i r e output high od f o r trajectory t_low duration x do follow t_high duration x od Figure 3: A trivial forward simulation from automaton Low to High. Apart from the specifications of the two automata and the schedule block in the low-level one, the simulation relation is specified along with a step correspondence inside the proof block. 8

11 either manually or by using an automatic tool, so that the automaton becomes a primitive one that simply encapsulates its components. Josh Tauber demonstrates an automatic tool for expanding composite IOA automata[11, 10]. An extension of that tool could be used for this purpose, for example. Simulation of this expanded automaton can be done simply by writing a schedule block for the automaton and using the existing TIOA Simulator. On the other hand, this process has some disadvantages. First, even automatic expansion is sometimes difficult to get right, and its semantics around the combination of transitions with different where clauses are hard to understand. Second, the ability to provide a schedule block for every component independently is ruled out. As we discuss below, this option can be very helpful. Finally, fixing a bug in the expanded automaton would also require to manually trace the bug back in the individual components and perform the change there as well. Overall, the ability to simulate composite automata without requiring the user to expand the automata first is very useful. The TIOA Simulator will provide two alternative ways to simulate composite automata: The user will provide a single schedule block for the composition, but no schedule blocks for individual components. This option can be useful if it is easier to reason about system as a whole, or if a specific test case execution for system is desirable. The user will provide a schedule block for each individual component, and no schedule block for the composition. This option can be useful if it is easier to specify a single components schedule rather than the whole system s schedule. The simulator will give turns to the components in a non-deterministic way, thus this method can be used to test the system over multiple test case executions Schedule block for the Composition As mentioned above, the user will provide a single schedule block for the composition. The composition automaton is specified by its components, which are given a name and a parametrization of their formal parameters. Figure 4 shows an example of a composite automaton. The schedule block has very similar syntax with the normal schedule blocks. The main difference is that the component s name must precede the name of the transition or trajectory. automaton Composition components C: Channel (1,2) schedule do f i r e output C. send (m,i,j) od Figure 4: A composite automaton with a schedule block for the composition. 9

12 The simulator will attempt to execute the schedule block similar to the execution of primitive automaton schedule blocks. One important note is that all components must follow one of their trajectory definitions together. Thus, the NDR syntax can be modified slightly to allow a simultaneous follow statement in composite schedule blocks, as shown below: follow A. traj, B. traj, C. traj duration 10 Whenever a follow statement is encountered in the composition s schedule block, the simulator will check that exactly one trajectory definition from each component is included in the statement, and will attempt to execute them (as usual by checking the trajectory definition s the stopping conditions and invariant before and after the time passage) Schedule block for the components Another option in composite simulation is to allow users to specify a schedule block for each individual component of the system, instead of the composition itself. The simulator will then give turns to the components (for example, in a simple Round-Robin or weighted Round-Robin way). One important difference in this case is that connected actions (output and input actions with the same name) among different components must be fired at the same time. Thus, for every output action the Simulator is about to execute in one component, it looks for the set of corresponding input actions in other components and fires them as well. As in the previous case where the scheduler is in the composition, we must ensure that all components follow their time-passage events at the same time. We propose a method for achieving this below: Composite Simulation Algorithm For every component C of the system, we maintain two variables: (a) trajectory-waiting, a boolean, indicating whether or not the component is ready to follow a trajectory, and (b) duration, a Real, indicating the amount of time that must pass for the component to move on to the next statement in its schedule block. The algorithm then executes as follows: For each component C in the system: Let s be the next statement in its schedule block. If s is a conditional, loop, or assignment statement, then execute s normally. If s is a fire statement, execute s normally and if the transition is an output one, fire the corresponding input ones as well. Finally, if s is afollow statement, then: Pause the execution of C; Indicate that C is in a trajectory-waiting status with a duration left equal to the one indicated by the statement s duration keyword. Let W be the set of all the system s components that are not in a trajectory-waiting status. If W is not empty, this means that there is at least one (other) component not waiting for a trajectory. We then exit C s execution and yield the turn to one of the components in W. Otherwise, all components are waiting for their trajectories. Then, let d be the maximum duration that 10

13 TIOA Front-End IL IL Parser Abstract Syntax Tree Simulator PVS Translator Figure 5: TIOA Toolkit Architecture all components can follow without violating their stopping conditions, that is, the minimum of all components duration variable. Follow the trajectories of all components for d time units. Subtract d from all components duration variables. For each component whose duration becomes 0, set trajectory-waiting to false and move their program counter to the next statement. 3 Implementation The TIOA Simulator is one of the back-end tools in the TIOA Toolkit. The current architecture of the toolkit is shown in Figure 1. The Front-End (Syntax and Static Semantics Checker) parses TIOA, checks the specification and reports any errors to the user. A correct TIOA specification is then translated to an Intermediate Language (IL). The back-end tools use a common IL Parser to get an abstract syntax tree representation as Java objects. The Simulator extends a number of these abstract syntax tree nodes to provide simulation. 4 Conclusion This Master Thesis proposal describes the design of the TIOA Simulator, a tool for testing and analyzing complex distributed systems. Based on the Timed Input/Output Automaton framework, the TIOA Simulator will execute automata written in the TIOA Language, and can be used to test the proposed model and find any problems associated with it, help the user gain a better understanding of the system, facilitate verification and extract performance predictions. The combined use of the TIOA Simulator with model checking or theorem proving tools will provide a complete framework for specifying, testing and verifying complex distributed systems. 11

14 References [1] Andrej Bogdanov. Formal verification of simulations between I/O automata. Master s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA, September [2] Anna E. Chefter. A simulator for the IOA language. Master s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA, May [3] Laura G. Dean. Improved simulation of Input/Output automata. Master s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA, September [4] Stephen J. Garland and Nancy A. Lynch. The IOA language and toolset: Support for designing, analyzing, and building distributed systems. Technical Report MIT/LCS/TR-762, Laboratory for Computer Science, Massachusetts Institute of Technology, Cambridge, MA, August URL papers/lynch/ioa-tr-762.ps. [5] Dilsun Kaynar, Nancy Lynch, Sayan Mitra, and Stephen Garland. The TIOA language. Manuscript, October [6] Dilsun Kaynar, Nancy Lynch, Roberto Segala, and Frits Vaandrager. The theory of timed I/O automata. To appear in Synthesis Lectures on Computer Science, Morgan Claypool Publishers, [7] Nancy A. Lynch and Mark R. Tuttle. An introduction to input/output automata. CWI- Quarterly, 2(3): , September Centrum voor Wiskunde en Informatica, Amsterdam, The Netherlands. Technical Memo MIT/LCS/TM-373, Laboratory for Computer Science, Massachusetts Institute of Technology, Cambridge, MA, November [8] J. Antonio Ramırez-Robredo. Paired simulation of I/O automata. Master s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA, September [9] Edward Solovey. Simulation of composite I/O automata. Master s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA, September [10] Joshua A. Tauber. Verifiable Compilation of I/O Automata without Global Synchronization. PhD thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA, September

15 [11] Joshua A. Tauber and Stephen J. Garland. Definition and expansion of composite automata in IOA. Technical Report MIT/LCS/TR-959, Laboratory for Computer Science, Massachusetts Institute of Technology, Cambridge, MA, July URL [12] Michael J. Tsai. Code generation for the IOA language. Master s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA, June [13] Toh Ne Win. Theorem-proving distributed algorithms with dynamic analysis. Master s thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA, May [14] Toh Ne Win, Michael Ernst, Stephen Garland, Dilsun Kirli, and Nancy Lynch. Using simulated execution in verifying distributed algorithms. International Journal on Software Tools for Technology Transfer (STTT), 4:1 10,

tempo2hsal: Converting Tempo Models into HybridSal Tool Description

tempo2hsal: Converting Tempo Models into HybridSal Tool Description tempo2hsal: Converting Tempo Models into HybridSal Tool Description Ashish Tiwari Bruno Dutertre Computer Science Laboratory SRI International Menlo Park CA 94025 USA Report submitted under Honeywell subcontract

More information

A Correctness Proof for a Practical Byzantine-Fault-Tolerant Replication Algorithm

A Correctness Proof for a Practical Byzantine-Fault-Tolerant Replication Algorithm Appears as Technical Memo MIT/LCS/TM-590, MIT Laboratory for Computer Science, June 1999 A Correctness Proof for a Practical Byzantine-Fault-Tolerant Replication Algorithm Miguel Castro and Barbara Liskov

More information

SIMULATING I/O AUTOMATA. TRACE PROPERTIES

SIMULATING I/O AUTOMATA. TRACE PROPERTIES SIMULATING I/O AUTOMATA. TRACE PROPERTIES Cristian Gavrilă and Ioan Jurca fcristig,ionelg@cs.utt.ro University Politehnica of Timişoara Computer Science Department Abstract I/O automaton is a mathematical

More information

Implementing I/O-Automaton Specifications on Erlang

Implementing I/O-Automaton Specifications on Erlang SCIS & ISIS 2010, Dec. 8-12, 2010, Okayama Convention Center, Okayama, Japan Implementing I/O-Automaton Specifications on Erlang Yoshinobu Kawabe and Jun Zhao Department of Information Science Aichi Institute

More information

Using Simulated Execution in Verifying Distributed Algorithms

Using Simulated Execution in Verifying Distributed Algorithms Using Simulated Execution in Verifying Distributed Algorithms Toh Ne Win, Michael D. Ernst, Stephen J. Garland, Dilsun Kırlı, and Nancy A. Lynch MIT Laboratory for Computer Science {tohn,mernst,garland,dilsun,lynch}@lcs.mit.edu

More information

Distributed Systems Programming (F21DS1) Formal Verification

Distributed Systems Programming (F21DS1) Formal Verification Distributed Systems Programming (F21DS1) Formal Verification Andrew Ireland Department of Computer Science School of Mathematical and Computer Sciences Heriot-Watt University Edinburgh Overview Focus on

More information

TEMPO RELEASE NOTES I O A. Recent Fixes (v0.1.4) 3. Known Issues (v0.1.4) 4. Language changes (v0.1.4) 4. v0.1.4 (BETA) 12/14/2006

TEMPO RELEASE NOTES I O A. Recent Fixes (v0.1.4) 3. Known Issues (v0.1.4) 4. Language changes (v0.1.4) 4. v0.1.4 (BETA) 12/14/2006 TEMPO RELEASE NOTES v0.1.4 (BETA) 12/14/2006 Recent Fixes (v0.1.4) 3 v0.1.4-12/14/2006 3 v0.1.3-11/9/2006 3 v0.1.2-9/25/2006 3 Known Issues (v0.1.4) 4 Graphical User Interface 4 I O A Language changes

More information

Analyzing Security Protocols using Probabilistic I/O Automata

Analyzing Security Protocols using Probabilistic I/O Automata Analyzing Security Protocols using Probabilistic I/O Automata Nancy Lynch MIT, EECS, CSAIL Workshop on Discrete Event Systems (Wodes 06) Ann Arbor, Michigan July 11, 2006 1 References Authors: Ran Canetti,

More information

Verifiable Compilation of I/O Automata without Global Synchronization. Joshua A. Tauber

Verifiable Compilation of I/O Automata without Global Synchronization. Joshua A. Tauber Verifiable Compilation of I/O Automata without Global Synchronization by Joshua A. Tauber B.S., Computer Science (1991) B.A., Government (1991) Cornell University S.M., Electrical Engineering and Computer

More information

Cover Page. The handle holds various files of this Leiden University dissertation

Cover Page. The handle   holds various files of this Leiden University dissertation Cover Page The handle http://hdl.handle.net/1887/22891 holds various files of this Leiden University dissertation Author: Gouw, Stijn de Title: Combining monitoring with run-time assertion checking Issue

More information

Specifying and proving properties of timed I/O automata using Tempo

Specifying and proving properties of timed I/O automata using Tempo Des Autom Embed Syst DOI 10.1007/s10617-008-9022-2 Specifying and proving properties of timed I/O automata using Tempo Myla Archer Hongping Lim Nancy Lynch Sayan Mitra Shinya Umeno Received: 13 November

More information

By: Chaitanya Settaluri Devendra Kalia

By: Chaitanya Settaluri Devendra Kalia By: Chaitanya Settaluri Devendra Kalia What is an embedded system? An embedded system Uses a controller to perform some function Is not perceived as a computer Software is used for features and flexibility

More information

MODEL-BASED DESIGN OF CODE FOR PLC CONTROLLERS

MODEL-BASED DESIGN OF CODE FOR PLC CONTROLLERS Krzysztof Sacha Warsaw University of Technology, Nowowiejska 15/19, 00-665 Warszawa, Poland k.sacha@ia.pw.edu.pl Keywords: Abstract: Automatic program generation, Model verification, Finite state machine,

More information

A Note on Fairness in I/O Automata. Judi Romijn and Frits Vaandrager CWI. Abstract

A Note on Fairness in I/O Automata. Judi Romijn and Frits Vaandrager CWI. Abstract A Note on Fairness in I/O Automata Judi Romijn and Frits Vaandrager CWI P.O. Box 94079, 1090 GB Amsterdam, The Netherlands judi@cwi.nl, fritsv@cwi.nl Abstract Notions of weak and strong fairness are studied

More information

MIT Specifying Languages with Regular Expressions and Context-Free Grammars

MIT Specifying Languages with Regular Expressions and Context-Free Grammars MIT 6.035 Specifying Languages with Regular essions and Context-Free Grammars Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Language Definition Problem How to precisely

More information

Semantics via Syntax. f (4) = if define f (x) =2 x + 55.

Semantics via Syntax. f (4) = if define f (x) =2 x + 55. 1 Semantics via Syntax The specification of a programming language starts with its syntax. As every programmer knows, the syntax of a language comes in the shape of a variant of a BNF (Backus-Naur Form)

More information

Symbolic Execution and Proof of Properties

Symbolic Execution and Proof of Properties Chapter 7 Symbolic Execution and Proof of Properties Symbolic execution builds predicates that characterize the conditions under which execution paths can be taken and the effect of the execution on program

More information

Programming Languages Third Edition

Programming Languages Third Edition Programming Languages Third Edition Chapter 12 Formal Semantics Objectives Become familiar with a sample small language for the purpose of semantic specification Understand operational semantics Understand

More information

LOGIC AND DISCRETE MATHEMATICS

LOGIC AND DISCRETE MATHEMATICS LOGIC AND DISCRETE MATHEMATICS A Computer Science Perspective WINFRIED KARL GRASSMANN Department of Computer Science University of Saskatchewan JEAN-PAUL TREMBLAY Department of Computer Science University

More information

Modeling Interactions of Web Software

Modeling Interactions of Web Software Modeling Interactions of Web Software Tevfik Bultan Department of Computer Science University of California Santa Barbara, CA 9106 bultan@cs.ucsb.edu Abstract Modeling interactions among software components

More information

Lecture Notes on Program Equivalence

Lecture Notes on Program Equivalence Lecture Notes on Program Equivalence 15-312: Foundations of Programming Languages Frank Pfenning Lecture 24 November 30, 2004 When are two programs equal? Without much reflection one might say that two

More information

MIT Specifying Languages with Regular Expressions and Context-Free Grammars. Martin Rinard Massachusetts Institute of Technology

MIT Specifying Languages with Regular Expressions and Context-Free Grammars. Martin Rinard Massachusetts Institute of Technology MIT 6.035 Specifying Languages with Regular essions and Context-Free Grammars Martin Rinard Massachusetts Institute of Technology Language Definition Problem How to precisely define language Layered structure

More information

Handout 9: Imperative Programs and State

Handout 9: Imperative Programs and State 06-02552 Princ. of Progr. Languages (and Extended ) The University of Birmingham Spring Semester 2016-17 School of Computer Science c Uday Reddy2016-17 Handout 9: Imperative Programs and State Imperative

More information

Lecture 4 Searching Arrays

Lecture 4 Searching Arrays Lecture 4 Searching Arrays 15-122: Principles of Imperative Computation (Spring 2018) Frank Pfenning One of the fundamental and recurring problems in computer science is to find elements in collections,

More information

In Our Last Exciting Episode

In Our Last Exciting Episode In Our Last Exciting Episode #1 Lessons From Model Checking To find bugs, we need specifications What are some good specifications? To convert a program into a model, we need predicates/invariants and

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Fall 2016 Lecture 7a Andrew Tolmach Portland State University 1994-2016 Values and Types We divide the universe of values according to types A type is a set of values and a

More information

From Event-B Models to Dafny Code Contracts

From Event-B Models to Dafny Code Contracts From Event-B Models to Dafny Code Contracts Mohammadsadegh Dalvandi, Michael Butler, Abdolbaghi Rezazadeh Electronic and Computer Science School, University of Southampton Southampton, United Kingdom {md5g11,mjb,ra3}@ecs.soton.ac.uk

More information

A Small Permutation Group Engine by: Gregory Kip. COMS W4115 Programming Languages and Translators Prof. Stephen Edwards

A Small Permutation Group Engine by: Gregory Kip. COMS W4115 Programming Languages and Translators Prof. Stephen Edwards µperm A Small Permutation Group Engine by: Gregory Kip COMS W4115 Programming Languages and Translators Prof. Stephen Edwards Abstract Given the abstract character of much of modern physics and mathematics,

More information

ITT8060: Advanced Programming (in F#)

ITT8060: Advanced Programming (in F#) based on slides by Michael R. Hansen ITT8060: Advanced Programming (in F#) Lecture 2: Identifiers, values, expressions, functions and types Juhan Ernits Department of Software Science, Tallinn University

More information

COS 320. Compiling Techniques

COS 320. Compiling Techniques Topic 5: Types COS 320 Compiling Techniques Princeton University Spring 2016 Lennart Beringer 1 Types: potential benefits (I) 2 For programmers: help to eliminate common programming mistakes, particularly

More information

Runtime Checking for Program Verification Systems

Runtime Checking for Program Verification Systems Runtime Checking for Program Verification Systems Karen Zee, Viktor Kuncak, and Martin Rinard MIT CSAIL Tuesday, March 13, 2007 Workshop on Runtime Verification 1 Background Jahob program verification

More information

Axiomatic Specification. Al-Said, Apcar, Jerejian

Axiomatic Specification. Al-Said, Apcar, Jerejian Axiomatic Specification Al-Said, Apcar, Jerejian 1 Axioms: Wffs that can be written down without any reference to any other Wffs. Wffs that are stipulated as unproved premises for the proof of other wffs

More information

Formal verification of simulations between I/O automata by Andrej Bogdanov B.S., Massachusetts Institute of Technology (2000) Submitted to the Departm

Formal verification of simulations between I/O automata by Andrej Bogdanov B.S., Massachusetts Institute of Technology (2000) Submitted to the Departm Formal verification of simulations between I/O automata by Andrej Bogdanov B.S., Massachusetts Institute of Technology (2000) Submitted to the Department of Electrical Engineering and Computer Science

More information

SEMANTIC ANALYSIS TYPES AND DECLARATIONS

SEMANTIC ANALYSIS TYPES AND DECLARATIONS SEMANTIC ANALYSIS CS 403: Type Checking Stefan D. Bruda Winter 2015 Parsing only verifies that the program consists of tokens arranged in a syntactically valid combination now we move to check whether

More information

An Evolution of Mathematical Tools

An Evolution of Mathematical Tools An Evolution of Mathematical Tools From Conceptualization to Formalization Here's what we do when we build a formal model (or do a computation): 0. Identify a collection of objects/events in the real world.

More information

Graph algorithms based on infinite automata: logical descriptions and usable constructions

Graph algorithms based on infinite automata: logical descriptions and usable constructions Graph algorithms based on infinite automata: logical descriptions and usable constructions Bruno Courcelle (joint work with Irène Durand) Bordeaux-1 University, LaBRI (CNRS laboratory) 1 Overview Algorithmic

More information

3.7 Denotational Semantics

3.7 Denotational Semantics 3.7 Denotational Semantics Denotational semantics, also known as fixed-point semantics, associates to each programming language construct a well-defined and rigorously understood mathematical object. These

More information

On Nested Depth First Search

On Nested Depth First Search DIMACS Series in Discrete Mathematics and Theoretical Computer Science Volume 32, 1997 On Nested Depth First Search Gerard J. Holzmann, Doron Peled, and Mihalis Yannakakis The SPIN. ABSTRACT. We show in

More information

A Language for Access Control in CORBA Security

A Language for Access Control in CORBA Security A Language for Access Control in CORBA Security Polar Humenn Adiron, LLC Syracuse University CASE Center Syracuse, NY 13244-4100 polar@adiron.com polar@syr.edu ABSTRACT In this brief paper, I present the

More information

DISCRETE-event dynamic systems (DEDS) are dynamic

DISCRETE-event dynamic systems (DEDS) are dynamic IEEE TRANSACTIONS ON CONTROL SYSTEMS TECHNOLOGY, VOL. 7, NO. 2, MARCH 1999 175 The Supervised Control of Discrete-Event Dynamic Systems François Charbonnier, Hassane Alla, and René David Abstract The supervisory

More information

Program Analysis: Lecture 02 Page 1 of 32

Program Analysis: Lecture 02 Page 1 of 32 Program Analysis: Lecture 02 Page 1 of 32 Program Analysis/ Mooly Sagiv Lecture 1, 31/10/2012 Operational Semantics Notes by: Kalev Alpernas As background to the subject of Program Analysis, we will first

More information

Lecture Notes on Linear Search

Lecture Notes on Linear Search Lecture Notes on Linear Search 15-122: Principles of Imperative Computation Frank Pfenning Lecture 5 January 28, 2014 1 Introduction One of the fundamental and recurring problems in computer science is

More information

3.4 Deduction and Evaluation: Tools Conditional-Equational Logic

3.4 Deduction and Evaluation: Tools Conditional-Equational Logic 3.4 Deduction and Evaluation: Tools 3.4.1 Conditional-Equational Logic The general definition of a formal specification from above was based on the existence of a precisely defined semantics for the syntax

More information

Informatics 1. Computation and Logic. Lecture 17 The Big Ideas

Informatics 1. Computation and Logic. Lecture 17 The Big Ideas Informatics 1 Computation and Logic Lecture 17 The Big Ideas Creative Commons License Informatics 1: Computation and Logic by Michael Paul Fourman is licensed under a Creative Commons Attribution-ShareAlike

More information

The SPIN Model Checker

The SPIN Model Checker The SPIN Model Checker Metodi di Verifica del Software Andrea Corradini Lezione 1 2013 Slides liberamente adattate da Logic Model Checking, per gentile concessione di Gerard J. Holzmann http://spinroot.com/spin/doc/course/

More information

Lecture Notes on Liveness Analysis

Lecture Notes on Liveness Analysis Lecture Notes on Liveness Analysis 15-411: Compiler Design Frank Pfenning André Platzer Lecture 4 1 Introduction We will see different kinds of program analyses in the course, most of them for the purpose

More information

Definition: A context-free grammar (CFG) is a 4- tuple. variables = nonterminals, terminals, rules = productions,,

Definition: A context-free grammar (CFG) is a 4- tuple. variables = nonterminals, terminals, rules = productions,, CMPSCI 601: Recall From Last Time Lecture 5 Definition: A context-free grammar (CFG) is a 4- tuple, variables = nonterminals, terminals, rules = productions,,, are all finite. 1 ( ) $ Pumping Lemma for

More information

Lecture 1 Contracts. 1 A Mysterious Program : Principles of Imperative Computation (Spring 2018) Frank Pfenning

Lecture 1 Contracts. 1 A Mysterious Program : Principles of Imperative Computation (Spring 2018) Frank Pfenning Lecture 1 Contracts 15-122: Principles of Imperative Computation (Spring 2018) Frank Pfenning In these notes we review contracts, which we use to collectively denote function contracts, loop invariants,

More information

Lecture 1 Contracts : Principles of Imperative Computation (Fall 2018) Frank Pfenning

Lecture 1 Contracts : Principles of Imperative Computation (Fall 2018) Frank Pfenning Lecture 1 Contracts 15-122: Principles of Imperative Computation (Fall 2018) Frank Pfenning In these notes we review contracts, which we use to collectively denote function contracts, loop invariants,

More information

NOTES ON OBJECT-ORIENTED MODELING AND DESIGN

NOTES ON OBJECT-ORIENTED MODELING AND DESIGN NOTES ON OBJECT-ORIENTED MODELING AND DESIGN Stephen W. Clyde Brigham Young University Provo, UT 86402 Abstract: A review of the Object Modeling Technique (OMT) is presented. OMT is an object-oriented

More information

Negations in Refinement Type Systems

Negations in Refinement Type Systems Negations in Refinement Type Systems T. Tsukada (U. Tokyo) 14th March 2016 Shonan, JAPAN This Talk About refinement intersection type systems that refute judgements of other type systems. Background Refinement

More information

Computer Science Technical Report

Computer Science Technical Report Computer Science Technical Report Feasibility of Stepwise Addition of Multitolerance to High Atomicity Programs Ali Ebnenasir and Sandeep S. Kulkarni Michigan Technological University Computer Science

More information

CSC 501 Semantics of Programming Languages

CSC 501 Semantics of Programming Languages CSC 501 Semantics of Programming Languages Subtitle: An Introduction to Formal Methods. Instructor: Dr. Lutz Hamel Email: hamel@cs.uri.edu Office: Tyler, Rm 251 Books There are no required books in this

More information

The Embedded Systems Design Challenge. EPFL Verimag

The Embedded Systems Design Challenge. EPFL Verimag The Embedded Systems Design Challenge Tom Henzinger Joseph Sifakis EPFL Verimag Formal Methods: A Tale of Two Cultures Engineering Computer Science Differential Equations Linear Algebra Probability Theory

More information

Chapter 3: Lexing and Parsing

Chapter 3: Lexing and Parsing Chapter 3: Lexing and Parsing Aarne Ranta Slides for the book Implementing Programming Languages. An Introduction to Compilers and Interpreters, College Publications, 2012. Lexing and Parsing* Deeper understanding

More information

Safe Stratified Datalog With Integer Order Does not Have Syntax

Safe Stratified Datalog With Integer Order Does not Have Syntax Safe Stratified Datalog With Integer Order Does not Have Syntax Alexei P. Stolboushkin Department of Mathematics UCLA Los Angeles, CA 90024-1555 aps@math.ucla.edu Michael A. Taitslin Department of Computer

More information

CS 512, Spring 2017: Take-Home End-of-Term Examination

CS 512, Spring 2017: Take-Home End-of-Term Examination CS 512, Spring 2017: Take-Home End-of-Term Examination Out: Tuesday, 9 May 2017, 12:00 noon Due: Wednesday, 10 May 2017, by 11:59 am Turn in your solutions electronically, as a single PDF file, by placing

More information

INF672 Protocol Safety and Verification. Karthik Bhargavan Xavier Rival Thomas Clausen

INF672 Protocol Safety and Verification. Karthik Bhargavan Xavier Rival Thomas Clausen INF672 Protocol Safety and Verication Karthik Bhargavan Xavier Rival Thomas Clausen 1 Course Outline Lecture 1 [Today, Sep 15] Introduction, Motivating Examples Lectures 2-4 [Sep 22,29, Oct 6] Network

More information

Software Engineering using Formal Methods

Software Engineering using Formal Methods Software Engineering using Formal Methods Introduction to Promela Wolfgang Ahrendt 03 September 2015 SEFM: Promela /GU 150903 1 / 36 Towards Model Checking System Model Promela Program byte n = 0; active

More information

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Compiler Design

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Compiler Design i About the Tutorial A compiler translates the codes written in one language to some other language without changing the meaning of the program. It is also expected that a compiler should make the target

More information

Automatic synthesis of switching controllers for linear hybrid systems: Reachability control

Automatic synthesis of switching controllers for linear hybrid systems: Reachability control Automatic synthesis of switching controllers for linear hybrid systems: Reachability control Massimo Benerecetti and Marco Faella Università di Napoli Federico II, Italy Abstract. We consider the problem

More information

Generating Functional Implementations of Finite State Automata in C# 3.0

Generating Functional Implementations of Finite State Automata in C# 3.0 Workshop on Generative Technologies 2008 Generating Functional Implementations of Finite State Automata in C# 3.0 Mihály Biczó Department of Programming Languages and Compilers Eötvös Loránd University

More information

Languages and Compilers

Languages and Compilers Principles of Software Engineering and Operational Systems Languages and Compilers SDAGE: Level I 2012-13 3. Formal Languages, Grammars and Automata Dr Valery Adzhiev vadzhiev@bournemouth.ac.uk Office:

More information

Introduction to Formal Methods

Introduction to Formal Methods 2008 Spring Software Special Development 1 Introduction to Formal Methods Part I : Formal Specification i JUNBEOM YOO jbyoo@knokuk.ac.kr Reference AS Specifier s Introduction to Formal lmethods Jeannette

More information

Formal Specification and Verification

Formal Specification and Verification Formal Specification and Verification Introduction to Promela Bernhard Beckert Based on a lecture by Wolfgang Ahrendt and Reiner Hähnle at Chalmers University, Göteborg Formal Specification and Verification:

More information

VS 3 : SMT Solvers for Program Verification

VS 3 : SMT Solvers for Program Verification VS 3 : SMT Solvers for Program Verification Saurabh Srivastava 1,, Sumit Gulwani 2, and Jeffrey S. Foster 1 1 University of Maryland, College Park, {saurabhs,jfoster}@cs.umd.edu 2 Microsoft Research, Redmond,

More information

CS Lecture 2. The Front End. Lecture 2 Lexical Analysis

CS Lecture 2. The Front End. Lecture 2 Lexical Analysis CS 1622 Lecture 2 Lexical Analysis CS 1622 Lecture 2 1 Lecture 2 Review of last lecture and finish up overview The first compiler phase: lexical analysis Reading: Chapter 2 in text (by 1/18) CS 1622 Lecture

More information

Verifying JML specifications with model fields

Verifying JML specifications with model fields Verifying JML specifications with model fields Cees-Bart Breunesse and Erik Poll Department of Computer Science, University of Nijmegen Abstract. The specification language JML (Java Modeling Language)

More information

Chapter 3. Semantics. Topics. Introduction. Introduction. Introduction. Introduction

Chapter 3. Semantics. Topics. Introduction. Introduction. Introduction. Introduction Topics Chapter 3 Semantics Introduction Static Semantics Attribute Grammars Dynamic Semantics Operational Semantics Axiomatic Semantics Denotational Semantics 2 Introduction Introduction Language implementors

More information

RAISE in Perspective

RAISE in Perspective RAISE in Perspective Klaus Havelund NASA s Jet Propulsion Laboratory, Pasadena, USA Klaus.Havelund@jpl.nasa.gov 1 The Contribution of RAISE The RAISE [6] Specification Language, RSL, originated as a development

More information

1 Lexical Considerations

1 Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler

More information

Questions? Static Semantics. Static Semantics. Static Semantics. Next week on Wednesday (5 th of October) no

Questions? Static Semantics. Static Semantics. Static Semantics. Next week on Wednesday (5 th of October) no Questions? First exercise is online: http://www.win.tue.nl/~mvdbrand/courses/glt/1112/ Deadline 17 th of October Next week on Wednesday (5 th of October) no lectures!!! Primitive types Primitive value

More information

2386 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 52, NO. 6, JUNE 2006

2386 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 52, NO. 6, JUNE 2006 2386 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 52, NO. 6, JUNE 2006 The Encoding Complexity of Network Coding Michael Langberg, Member, IEEE, Alexander Sprintson, Member, IEEE, and Jehoshua Bruck,

More information

Verifiable Hierarchical Protocols with Network Invariants on Parametric Systems

Verifiable Hierarchical Protocols with Network Invariants on Parametric Systems Verifiable Hierarchical Protocols with Network Invariants on Parametric Systems Opeoluwa Matthews, Jesse Bingham, Daniel Sorin http://people.duke.edu/~om26/ FMCAD 2016 - Mountain View, CA Problem Statement

More information

Comparing and Contrasting different Approaches of Code Generator(Enum,Map-Like,If-else,Graph)

Comparing and Contrasting different Approaches of Code Generator(Enum,Map-Like,If-else,Graph) Comparing and Contrasting different Approaches of Generator(Enum,Map-Like,If-else,Graph) Vivek Tripathi 1 Sandeep kumar Gonnade 2 Mtech Scholar 1 Asst.Professor 2 Department of Computer Science & Engineering,

More information

11. a b c d e. 12. a b c d e. 13. a b c d e. 14. a b c d e. 15. a b c d e

11. a b c d e. 12. a b c d e. 13. a b c d e. 14. a b c d e. 15. a b c d e CS-3160 Concepts of Programming Languages Spring 2015 EXAM #1 (Chapters 1-6) Name: SCORES MC: /75 PROB #1: /15 PROB #2: /10 TOTAL: /100 Multiple Choice Responses Each multiple choice question in the separate

More information

Software Engineering using Formal Methods

Software Engineering using Formal Methods Software Engineering using Formal Methods Introduction to Promela Wolfgang Ahrendt & Richard Bubel & Reiner Hähnle & Wojciech Mostowski 31 August 2011 SEFM: Promela /GU 110831 1 / 35 Towards Model Checking

More information

Lecture 9: Reachability

Lecture 9: Reachability Lecture 9: Reachability Outline of Lecture Reachability General Transition Systems Algorithms for Reachability Safety through Reachability Backward Reachability Algorithm Given hybrid automaton H : set

More information

Formal Methods for Software Development

Formal Methods for Software Development Formal Methods for Software Development Verification with Spin Wolfgang Ahrendt 07 September 2018 FMSD: Spin /GU 180907 1 / 34 Spin: Previous Lecture vs. This Lecture Previous lecture Spin appeared as

More information

COMP 763. Eugene Syriani. Ph.D. Student in the Modelling, Simulation and Design Lab School of Computer Science. McGill University

COMP 763. Eugene Syriani. Ph.D. Student in the Modelling, Simulation and Design Lab School of Computer Science. McGill University Eugene Syriani Ph.D. Student in the Modelling, Simulation and Design Lab School of Computer Science McGill University 1 OVERVIEW In the context In Theory: Timed Automata The language: Definitions and Semantics

More information

Data types for mcrl2

Data types for mcrl2 Data types for mcrl2 Aad Mathijssen April 5, 2018 We provide a syntax for the standard data types of the mcrl2 language. This syntax is intended to be a practical mix between standard mathematical notation

More information

NP-Completeness of 3SAT, 1-IN-3SAT and MAX 2SAT

NP-Completeness of 3SAT, 1-IN-3SAT and MAX 2SAT NP-Completeness of 3SAT, 1-IN-3SAT and MAX 2SAT 3SAT The 3SAT problem is the following. INSTANCE : Given a boolean expression E in conjunctive normal form (CNF) that is the conjunction of clauses, each

More information

Proof Pearl: The Termination Analysis of Terminator

Proof Pearl: The Termination Analysis of Terminator Proof Pearl: The Termination Analysis of Terminator Joe Hurd Computing Laboratory Oxford University joe.hurd@comlab.ox.ac.uk Abstract. Terminator is a static analysis tool developed by Microsoft Research

More information

Formal Verification. Lecture 10

Formal Verification. Lecture 10 Formal Verification Lecture 10 Formal Verification Formal verification relies on Descriptions of the properties or requirements of interest Descriptions of systems to be analyzed, and rely on underlying

More information

LECTURE NOTES ON COMPILER DESIGN P a g e 2

LECTURE NOTES ON COMPILER DESIGN P a g e 2 LECTURE NOTES ON COMPILER DESIGN P a g e 1 (PCCS4305) COMPILER DESIGN KISHORE KUMAR SAHU SR. LECTURER, DEPARTMENT OF INFORMATION TECHNOLOGY ROLAND INSTITUTE OF TECHNOLOGY, BERHAMPUR LECTURE NOTES ON COMPILER

More information

Action Language Verifier, Extended

Action Language Verifier, Extended Action Language Verifier, Extended Tuba Yavuz-Kahveci 1, Constantinos Bartzis 2, and Tevfik Bultan 3 1 University of Florida 2 Carnegie Mellon University 3 UC, Santa Barbara 1 Introduction Action Language

More information

Formally-Proven Kosaraju s algorithm

Formally-Proven Kosaraju s algorithm Formally-Proven Kosaraju s algorithm Laurent Théry Laurent.Thery@sophia.inria.fr Abstract This notes explains how the Kosaraju s algorithm that computes the strong-connected components of a directed graph

More information

A Partial Correctness Proof for Programs with Decided Specifications

A Partial Correctness Proof for Programs with Decided Specifications Applied Mathematics & Information Sciences 1(2)(2007), 195-202 An International Journal c 2007 Dixie W Publishing Corporation, U. S. A. A Partial Correctness Proof for Programs with Decided Specifications

More information

A UNITY-based Formalism for Dynamic Distributed Systems

A UNITY-based Formalism for Dynamic Distributed Systems A UNITY-based Formalism for Dynamic Distributed Systems Daniel M. Zimmerman Computer Science 256-80 California Institute of Technology Pasadena, California 91125 USA dmz@cs.caltech.edu Abstract We describe

More information

Synchronization SPL/2010 SPL/20 1

Synchronization SPL/2010 SPL/20 1 Synchronization 1 Overview synchronization mechanisms in modern RTEs concurrency issues places where synchronization is needed structural ways (design patterns) for exclusive access 2 Overview synchronization

More information

Formal Verification in Industry

Formal Verification in Industry Formal Verification in Industry 1 Formal Verification in Industry John Harrison Intel Corporation The cost of bugs Formal verification Machine-checked proof Automatic and interactive approaches HOL Light

More information

Monitoring Interfaces for Faults

Monitoring Interfaces for Faults Monitoring Interfaces for Faults Aleksandr Zaks RV 05 - Fifth Workshop on Runtime Verification Joint work with: Amir Pnueli, Lenore Zuck Motivation Motivation Consider two components interacting with each

More information

Requirements Specifications

Requirements Specifications ACM Transactions on Software Engineering and Methodology, 1996. Automated Consistency Checking of Requirements Specifications CONSTANCE L. HEITMEYER, RALPH D. JEFFORDS, BRUCE G. LABAW JUNBEOM YOO Dependable

More information

Course notes for Data Compression - 2 Kolmogorov complexity Fall 2005

Course notes for Data Compression - 2 Kolmogorov complexity Fall 2005 Course notes for Data Compression - 2 Kolmogorov complexity Fall 2005 Peter Bro Miltersen September 29, 2005 Version 2.0 1 Kolmogorov Complexity In this section, we present the concept of Kolmogorov Complexity

More information

Petri Nets ~------~ R-ES-O---N-A-N-C-E-I--se-p-te-m--be-r Applications.

Petri Nets ~------~ R-ES-O---N-A-N-C-E-I--se-p-te-m--be-r Applications. Petri Nets 2. Applications Y Narahari Y Narahari is currently an Associate Professor of Computer Science and Automation at the Indian Institute of Science, Bangalore. His research interests are broadly

More information

CS422 - Programming Language Design

CS422 - Programming Language Design 1 CS422 - Programming Language Design Denotational Semantics Grigore Roşu Department of Computer Science University of Illinois at Urbana-Champaign 2 Denotational semantics, alsoknownasfix-point semantics,

More information

7. Introduction to Denotational Semantics. Oscar Nierstrasz

7. Introduction to Denotational Semantics. Oscar Nierstrasz 7. Introduction to Denotational Semantics Oscar Nierstrasz Roadmap > Syntax and Semantics > Semantics of Expressions > Semantics of Assignment > Other Issues References > D. A. Schmidt, Denotational Semantics,

More information

Distributed Algorithms 6.046J, Spring, Nancy Lynch

Distributed Algorithms 6.046J, Spring, Nancy Lynch Distributed Algorithms 6.046J, Spring, 205 Nancy Lynch What are Distributed Algorithms? Algorithms that run on networked processors, or on multiprocessors that share memory. They solve many kinds of problems:

More information

Lecture Notes on Real-world SMT

Lecture Notes on Real-world SMT 15-414: Bug Catching: Automated Program Verification Lecture Notes on Real-world SMT Matt Fredrikson Ruben Martins Carnegie Mellon University Lecture 15 1 Introduction In the previous lecture we studied

More information

Discrete Mathematics Lecture 4. Harper Langston New York University

Discrete Mathematics Lecture 4. Harper Langston New York University Discrete Mathematics Lecture 4 Harper Langston New York University Sequences Sequence is a set of (usually infinite number of) ordered elements: a 1, a 2,, a n, Each individual element a k is called a

More information