A Multiparadigm Language for Reactive Systems

Size: px
Start display at page:

Download "A Multiparadigm Language for Reactive Systems"

Transcription

1 A Multiparadigm Language for Reactive Systems M. Jourdan ) F. Lagnier ) F. Maraninchi and P. Raymond VERIMAG-SPECTRE* Miniparc ZIRST- rue Lavoisier Montbonnot-St Martin - FRANCE Abstract A system is said to be reactive if it interacts continuously with an environment, at a speed imposed by the environment. The system deals with inputs and outputs and the languages for programming reactive systems aim at describing the complex ordering and causality relations between the inputs and the correspo n d in g outputs. The synchronous approach, based upon the assumption that a system reacts an zero the, allows the definttion of compositional semantics for various kinds of lan uage constructs, in data-flow frameworks (Lustre /9! Signal [4]) as well as in imperative frameworks (Esterel [l, 21, Argos [d]). In this paper we take advantage of this compositionality property to define the mixing of data-flow constructs with automaton compositions in a single language. We apply the results to Lustre and Argos, and discuss some implementation issues. 1 Introduction According to the classification of computer systems inhoduced by A. Pnueli and D. Hare1 [6], a system is either transformational, or interactive or reactive. A tran.sformationa1 system acquires some data at the beginning of its execution, and produces some data as a result, on termination. A compiler is a typical example of such a system. On the contrary, interactive and reactive systems maintain a continuous interaction with their environment. They react' to inputs coming from this environment, by sending outputs to it. These interactions with the environment are based upon a set of atomic interactions called signals. The behavior of the system is a complex set of event sequences, describing which signals are relevant for the system at a given instant, and how it reacts to them, by sending output signals and preparing itself to receive new inputs. The languages for programming reactive systems aim at describing the reactive kernel of the system, i.e. the complex ordering and causality relations between the inputs and the corresponding outputs. The synchronous approach is based upon the assumption that the systems react in zero time: outputs 'Verimag is a joint laboratory of CNRS, Institut National Polytechnique de Grenoble, UniversitC J. Fourier and Verilog SA, associated with IMAG. Spectre is an INRIA project. are simultaneous with the inputs that cause them. This so called synchrony hypothesis is justified in 171. An important point is that it allows the definition of compositional semantics for various kinds of language constructs, in data-flow frameworks (Lustre [3], Signal [4]) as well as in imperative frameworks (Esterel [l, 21, Argos [8]). In this approach, a complex reactive system may be viewed as a set of subsystems which evolve simultaneously (in parallel) and communicate with each other in order to achieve a common behavior. Thanks to the compositionality of the semantics, each subsystem relates to the other ones in the same way the global system relates to its environment, and subsystems can be designed independently. The elementary object to be described is a function f which, taking the whole history of the system inputs into account, produces a single output. We are only interested in regular systems, for which the infinite set of input histories can be partitioned into a finite set of congruence classes: two histories hl and hz are equivalent if and only if f(h1) = f(h2), and this equivalence is a congruence for the operation which adds a new input i to the histories: if hl and h2 are equivalent, then so are h1.i and h2.i. These classes correspond to the states of a Mealy machine. Describing the reactive system then amounts to giving the transition and output functions of the machine. In a language like Lustre, the elementary systems are described by sets of recursive equations on the history of inputs and outputs, and composed by connecting the inputs of an object to the outputs of another one, thus forming a data-flow network. Moreover, these networks are described in a functional style: each node is parameterized and may be re-used in different contexts. In a language like Argos, the elementary systems are identified to Mealy machines, and described in extension by giving their sets of states and labeled transitions. They are composed using product-like operators on finite state machines. Subprograms may be encapsulated and parameterized, in order to be reused. The reader may find more details about Lustre and Argos in [5]. These two approaches, although starting from the same simple notion of an elementary reactive system, /94 $3.00 Q 1994 IEEE 211

2 The lead to quite different programming styles. These styles are complementary for several reasons. First, each of them may be the most appropriate for a particular program or subprogram; secondly, within the domain of reactive programming, people may be used to one style or to the other, depending on their scientific background. This paper presents an approach in which the two styles are mixed. The idea is to allow the descript,ion of elementary reactive objects in each of the two styles, and their combination with both constructs. This gives a new language in which the constructs can really be mixed, and not only juxtaposed. The important point is that the merging is done ut the source level. We do not want to define a kind of linker which would build an executable code from the objects created by compiling the two languages independently. The idea is to use the structures of one language to enrich the other one. This is like requesting a set of Prolog clauses to be the body of a C function! We show how to define the mixed language by identifying the common semantical basis of the two languages. The paper is organized as follows. In section 2 we define the Mealy machine model of reactive systems; section 3 presents the two styles informally and compares them. Section 4 gives the syntax and semantics of the languages A and L: A is a restriction of Argos to pure control (no data) and L is a restriction of Lustre to Boolean dat,a. Section 5 presents the mixed language. Its abstract syntax is obtained by combining the structures of the two languages; its semantics is given by the juxtaposition of the two semantics (with a slight extension of the L semantics); we illustrate it with an example. Section 6 discusses some implementation results obtained when applying these ideas to the Lustre and Argos programming environments. Section 7 is the conclusion. 2 The model of reactive systems We consider a finite alphabet of signals: cli = {a, b,c,...}. The model of a reactive system is a machine M defined by a tuple (In, Out, States, Init, U, I), where In C_ Q (resp. Out cli) is the set of inputs (resp. outputs) of the machine, Init E States is its initial state, U : States x 21n -+ 2OUt is the output function and I : States x 2"' + States is the transition function. Mem(X),X C_ Q, is the set of X-memories, i.e. functions from X to Boolean values. If u1 E Mem(X1) and u2 E Mem(XZ), then C T ~ u2] E Mem(X1 U XZ) is defined by: ul[~](t) = 02(x i if t E X2, U~[U~](I).= CT~(Z) otherwise. ulx, where X E Q, is the restriction of U to X. r] = u1.u2.....u,...., is a possible run of a machine (In, Out, States, Init, U, 7) if and only if there exists an infinite sequence of states ~ 1... ~ s, 2... with s1 = Init and V i > 0 ailout = O(si,uaIIn) and si+l = I(&, UilIn). In the sequel, we define the semantics of a language by giving, for each program, the set of model states, the initial state and the U and 7 functions. 3 Informal presentation of the languages L and A 3.1 ~ language L The language L is a Boolean restriction of the language Lustre. It adopts a data-flow approach to describe reactive systems. Each variable or expression represents the history of a signal, viewed as an infinite sequence of Boolean values. For instance, if X is an input signal, the input variable X of the corresponding L program represents an infinite sequence of Boolean values to, 21,..., xi,... where ti is true if and only if the corresponding signal is present during the ith reaction of the program. An L program consists of a header, which declares the names of input, output and local variables, and a set of equations defining the output and local variables. An equation id = exp should be considered in a mathematical sense: it means that the variable id is identical to the expression exp. This provides an important principle, the substitution principle: id can be substituted to exp everywhere in the program, and conversely. As a consequence, equations can be written in any order. Expressions are built with Boolean operators (true, and, not,...), which operate pointwise on sequences. For instance, true denotes the infi- nite sequence: (true, true,...); not X denotes (not to, not 21,...). To define recurrent sequences, L provides a binary delay operator pre ( exp, value), where exp is the delayed sequence, and the Boolean value the initial value. For instance, pre(x, false) denotes: (fufse,to,tl,...,~i,...) In fact, an L program can be viewed as a textual representation of an operator network, with a simple data-flow interpretation. This is why an L program, which is a user-defined operator, is called a node. The node after (see below) is an example of a simple L program, with a unique input e, and a unique output s. The output s becomes true after the first occurrence of e (i.e. the first time e is true), and remains true forever. node after.(e : bool) returns (s : bool); s = pre(e or s,false); tel A user-defined node can be instanciated within another node, using a functional style. In the node after-two (see below), two instances of the after node are used. Its output becomes true if and only if the two inputs were true at least once time in the past. This example also shows the use of local variables. node after-tvo (el,e2 : bool) returns (s : bool); var after_el,after-e:! : bool; after-el = after(e1); after-e2 = after(e2); s = after-el and after-e2; t el. 212

3 The data-flow network which corresponds to this L program is given by Figure 1. Figure 1: The network of after-two 3.2 The language A In the language A, simple reactive systems are described by giving the sets of states and labeled transitions of a Mealy machine, in extension. In the sequel, the states of these basic A programs will be called boxes, in order to avoid confusion with the states of the models. Complex systems are built from such objects, by applying operators. Parallel composition and refinement express the simultaneous evolution of several subsystems, which take inputs from, and emit outputs towards their global environment or the other components. Two components communicate if the input of one is an output of the other. The Argos communication mechanism is the synchronous broadcast of Esterel. It requires the use of internal signals, which can be used either as inputs or outputs. When an internal signal is output by a component, it may give raise to several transitions, in others components, which are simultaneous. To illustrate the A style, we give the A pro rams equivalent to the L programs after (figure 27 and after-two (figure 3). The three sets given with the name of the program are respectively the inputs, the outputs and the internal signals of the program. The initial box is marked by an arrow wit,hout source; the transition labels are of the form input-condition/outputs; the outputs part is optional; overlining of signals denotes Boolean negation. The dotted line is the graphical syntax for the parallel operator. of these components are subprogram calls to the aft er program. A subprogram call is a way to reuse a subprogram by renaming its inputs and outputs. The third component expresses the relation between the result s and the two intermediate results after-el and after&. To understand how these three automata communicate, suppose the first two (which are subprogram calls) are in their A boxes, and the third is in box G1. In response to a simultaneous occurrence of el and e2 in the environment, one transition in each automaton is triggered and their current boxes become respectively B and C3. During the following reaction, whatever the status of e is, since after-ei and after-& are emitted, s will be output. The refinement is the most interesting A operator when mixing the A and L styles, as there exists no equivalent structure in L. This operator is used to express a structure in which a controller may start and kill subprograms. It may be used to express the sequencing of subprograms. The operator is parameterized by a Mealy machine, whose boxes are said to be refined by subprograms. Hence it is a n-ary operator if the machine has n boxes. The intuitive semantics of the refinement operator is the following: when the system enters a refined box, the refining subprogram is started in its initial state. Leaving a refined box X kills the refining subprogram P; all information about its current state is lost. This subprogram may react and emit outputs at the instant when it is killed. A transition sourced in X and triggered by an external input expresses an interruption of P. Such a transition may also be triggered by an internal signal output by P, upon termination for instance. Consider a system whose inputs are a and e and whose single output is s. The occurrences of a define time intervals which begin with an odd occurrence and end with an even occurrence, both excluded. Within such an interval, the output s is true if and only if the input e has occurred during the same interval. Outside these intervals, s is always false. In A, this system is described by using a refinement structure. The controller is a two-box automaton which records the parity of the number of Q occurrences. The ODD box of the controller corresponds to the intervals defined above (cf. Figure 4). This box is refined by the after program. between-two ({U, e}, {s}, 0) Figure 2: The A program after (the structure is given graphically) The af ter-two program is the parallel composition of three components which communicate by exchanging two internal signals after-el and after-e2. Two Figure 4: The A program between-two 213

4 ~~~~ ~ ~ ~ ~ after-two ({el, ea}, {s}, {after-el, after-ea}) I after-el = after(e1)... after-e2 = after(e3) Figure 3: The A program after-two (the structure is given graphically) 3.3 Comparison of the two languages If we want to describe the between-two system in L, the node after cannot be used. Indeed, once its output s becomes true, it remains true forever. There exists no compositional way to express that the node should be restarted. The only way to do this is to take this possibility into account when writing the node newafter. We add an input restart to the node after and change its body. node new-after (e,restart : bool) returns (s : bool); s = if restart then false else pre((e and not restart) or s,false); tel This new node can be used in order to give the wanted system. node between-two( a, e : bool) returns ( s : bool); var EVEN, ODD, EVEN-was-active, ODD-was-active, ODD-s, ODD-restart : bool; s = ODD-was-active and ODD-s; ODD-s = new-after(e, ODD-restart); EVEN-was-act ive = pre (EVEN, true) ; ODD-was-active = pre(odd, false); EVEN = if (EVEN-was-active and a) then false else if (ODD-was-active and a) then true else EVEN-was-active; ODD = not EVEN; ODD-restart = EVEN-was-active and a; t el 4 Syntax and semantics of the languages L and A 4.1 The syntax of L An L program is denoted by N. The abstract syntax of L programs is : N ::= (I,O,L,Ep) Eq ::= idf=e IN1 EqEq e ::= c I idf 1 not e I e ope I pre(e, c) with c E {true, false} In a node (I, 0, L, Eq), I, 0 and L denote respectively the inputs, the outputs and the local variables of the node. Eq is the set of equations which defines the body of the node. An equation is, either an equality between an identifier and an expression, or a node call. In order to simplify the semantics of L, we consider that the body of the nodes have been copied (with a suitable renaming of the inputs and outputs) in place of each of their instanciations. We are not interested here in the capability of instanciating a node as a function of actual parameters, but only in the encapsulation of a set of equations with local variables. 4.2 The semantics of L Recall that the states of the model represent an abstraction of the input history of the system, necessary for the program to compute the correct outputs. In L, the only way to reference the input history is to use pre operators. This gives the states of the model: suppose we associate a Boolean memory with each expression which appears as the first argument of a pre operator; the state set of the model is the state space of this set of memories. In the semantic rules, the second argument of the pre operators is used as the memory. The states of the model are represented by the text of the program, where the second pre arguments vary. In the sequel, we define when a memory c is compatible with a state N, and if so, how the state is rewritten. 2 14

5 N Q. N (resp. Eq A Eq ) means that U is compatible with the state N (resp. the equations Eq), which is rewritten into N (resp. Eq ). This predicate is defined in terms of the predicate N 5 N (resp. Eq 3 Eq ), which means that under the hypothesis that U is the current memory, the state N (resp. Eq) is rewritten into N (resp. Eq ), while the output or local variables in w are set to true. (110, L, Eq) ++ (I,O, L, Ed) {z E 0 U L/a(x) = tt} = w (I, 0, L, Eq) 5 (I,O, L, Eq ) ut e A e, if ti = tt t,hen w = {zdf} else w = 0 idf = e L idf = e [Lgl [L21 Eql + Eql Eq2 $+ Eq2 Eql Eq2 Eql Eq3 [L31 U I- e A e means that 11 is the value of e evaluated in U, and that e is rewritten in e. is its set of boxes, qinit the initial box and T the set of transitions. A transition is of the form (qs, na,/p, pt). q3 and qt are the source and target boxes of the transition. me is a boolean condition on signal values. p is the set of signals which are emitted when the transition is taken. Ri is the subprogram which refines the ith box of the automaton. If it is nil, this box is not refined. 4.4 The semantics of A In A, the programmer references the input history by defining explicitly the boxes of the automaton components. The state space of the model can be identified to the Cartesian product of the sets of boxes of all the automata that appear in the program. In the semantics, a model state is a couple (PSI, Psz). Psi is used to represent an element of the abovementioned Cartesian product: it is the text of the program, where the qinit parts of the automaton definitions vary. Ps? is the text of the program. It is copied into Psl when the subprogram has to be restarted (cf. the rule A3 below). The notations are the same as for the L semantics. The predicate s -+ s is also used with a couple of program structures. We write U me when the boolean condition denoted by m, evaluates to true in U. u ~ Le e J U t- pre(e, U) A pre(e, w ) ~ 4 1 ui-e L e U t not e not e [L61 U I- idf + idf ~ 7 1 utc c. c [L*I 4.3 The syntax of A An A program is denoted by P. The abstract syntax of A programs is : P ::= (I, 0, L. Ps) subprogram Ps ::= PsllPs parallel operator I R(,Q,Y,~.~,T)(R~~...I fin) with R = IQ1 refinement operator I P R ::= Pslnil In an A program P = (IqO, L,Ps), 1.0 and L respectively denote the sets of inputs, outputs and internal signals of P. Ps is its structure. As we did for L, we consider that the body of the subprograms have been copied (with a suitable renaming of the inputs and outputs) in place of each of their instanciations. R(Q,~,~~~,T)(R~,..., R,) denotes a refinement operator parameterized by the automaton (Q, qzntt, T). Q In [A31 both the automaton and the subprogram which refines its current box participate in the reaction. The reaction of the subprogram is taken into account for its outputs only. The subprogram which refines the new current box qd is re-started in its initial state, using the information contained in the second component of a state. $(gc, me/p, qd) E T s.t. U I- me (RC, R:) 5 (R:, R:) PS = R(Q,,;,Tj(Ri>...,RL) ~ 4 1 (R(Q,~,,T)(RI~...tRn), f s) 5 R(Q,~,,T)(RI~...,R:,...,Rn)> PS) 215

6 In [A41 only the subprogram which refines the current box is involved in the global reaction. (nil, nil) + (nil, nil) ~ The mixed language 5.1 Syntax A mixed program is denoted by NP. The abstract syntax of a mixed program is : NP ::= NIP N I, 0, L, Eq) p ij: [ I, 0, L, PS) Eq e ::= ::= idf = e I P I N I Eq Eq c I idf I not e 1 e op e I pre(e, c) with c E {true, false} Ps ::= PsllPs I R[Q,~,,,,~,T)(RI, -..t Rn) with = IQI I PIN R ::= Pslnil 5.2 Semantics The semantics of the mixed language is obtained by juxtaposing the A semantics and a slightly modified version of the L semantics. Indeed, the syntax of the mixed language allows a L node to be embedded int,o a refinement structure. As a consequence, it has to be made restartable. As we did for the language A, a state of the model in the semantics of L is now a couple (NI, N2) where NI is the same as before, and N2 is a copy of the original program, to be used when the node is restarted. The new semantic rules are obtained by adding t,he second element of the couple which never varies. For example, L1 becomes L1 : UL E Mem(L) Eq Ed ~ ((190, L, Eq), + ((I,O, L, & I, N) The second element of the couple is used in the rule A An example described in the mixed language The assembly line controller specification The assembly line is composed of three parts: a conveyor belt, a stock of bottles and two machines. These parts are controlled by the system we want to describe. First we describe how each part interacts with the controller (see figure 5). Then, we describe how the assembly line must operate. The conveyor belt can be stopped (resp. started) by the input stop (resp. go). Its direction can be reversed by inv. On the conveyor belt, four sensors inform the controller that a bottle is in a given position by posi for i E [1,4]. The bottle stock reacts to the input open by put,ting a bottle on the conveyor belt. The two machines Ad1 and M2 are used for different tasks, so they are not always available for the controller. The output availl is true as long as M1 is available for the controller. which can request M1 to remain available by issuing req-1. M1 should start working on receiving startl, and send end-1 when it has finished. The same is true for M2. The assembly line must operate in the following way. When it is switched on (by the input onoff), the conveyor belt starts to the right, and a bottle must be set down on it. M1 and M2 can operate in any order. When a bottle is at the first position, the controller starts taking into account the availability of the two machines. As soon as a machine is available, it must be started or requested, depending on the position of the bottle. When a machine is requested, it stays available until it has done its task. Moreover, the conveyor belt must operate in order to convey the bottle in the right position. As soon as a machine is started, the belt should be stopped. A bottle may go through the fourth position when it has been processed by both machines The assembly line controller program Figure 6 gives a program for the assembly line controller. The main structure is a two-state automaton: OFF and ON. The ON state is refined by another two-state automaton: NoBottle and OneBottle. OneBottle is refined by the system which controls the assembly line when a bottle is under the conveyor belt between pos-1 and pos-4. It is easier to describe this subsystem in L than in A, because of the declarative form of its informal specification. The handler node is a possible descript,ion of it. The handler is composed of three node calls, which correspond to the three parts of the system: M1, M2 and the conveyor belt. node handler (end-l,avail-l,end-2,avail-2, pos-2,pos-3: bool) returns (req-1,start-1, req-2. start-2, inv,go,stop : bool); (req-1,start-1) = M-controller (end-1, avail-1,pos-2); (req-2, start-2) = M-controller (end-2,avail-2,pos-3); (inv,go.stop) = Belt(pos-2,pos-3, req-1,req-2, start-1,start-2,end-l,end-2); tel; The M-controller node expresses when a machine should be requested and/or started. It needs to know if the machine is available, if it has already performed its task and what the current position of the bottle on the belt is. It uses two local variables: Msasiequired, MSinished. These variables give information about the evolution of the M task. 216

7 avail-i - pos-1 pos 2 pos-3 Figure 5: The assembly line controller onoff / onof f pos-i \ (req-i,req2,start-i,start2, inv,go,stop) = handler(availl,avail2, end-1, end2,pos2,pos3) J pos-4 / open Figure 6: The assembly line controller program node M-controller (end,avail,pos : bool) returns (req,start : bool); var M-vas-required, M-finished : bool; M-was-required = after(req); M-f inished = after(end1; req = avail and not M-finished and not pos ; start = pos and avail and not M-finished; tel ; The Belt node controls the activitv and the direction of the conveyor belt. node Belt (pos-2,pos-3,req-l,req-2,start-l, start-2,end-l,end-2 : bool) returns (inv,go,stop : bool); var Right-dir, Run-ON, end : bool; Right-dir = if inv then not pre(right-dir,true) else pre(right-dir,true); Run-ON = if stop then not pre(run-on,true) else pre(run-on,true) ; end = after-tuo(end-l,end-2); stop = start-1 or start-2; go = end-1 or end-2; inv = (pos-2 and not pre(right-dir,true)) or (pos-3 and pre(right-dir,true) and not end); tel; 6 Implementation issues Lustre and Argos are both implemented. Their programming environments provide compilers which produce labeled transition systems in a form suitable for formal verification or code generation. Each of the compilers implements a version ofthe semantics which is equivalent'to the one presented here, but more operational. Since these semantics cannot be merged easily, there is no direct way of extending them to the mixed language. However, implementing the mixed language can be done by defining a compositional translation of a language into the other. The idea is to translate a mixed language program into a single language program, by translating the components which are not written in the target language. If this can be done in either direction, the programming environment of the mixed language may benefit from the functionalities of both environments (however, gettin back to the source level requires particular attention7. The translation of the mixed language into Argos is the simplest. Indeed the Lustre compiler may be 217

8 used to obtain, for each node, a labeled transition system usable as an Argos component. Then the Argos compiler is used. The translation of the mixed language into Lustre is more complex. The basic automaton components which appear in the Argos parts have to be translated into re-startable Lustre nodes. This can be done by associating one variable with each state of the automaton, in a standard way. The Lustre nodes which appear in the Lustre part have to be made re-startable, by adding a restart input. Then the Argos operators have to be interpreted as operators on nodes. This is the most difficult part. It can indeed be done in a compositional way: for a program P1 op P2, where op is an Argos operator, we first obtain re-startable Lustre nodes N1 and N2 for P1 and P2; then the node for P1 op P2 is built with a call to N1, a call to N2 and some additional equations which express the semantics of the operator. 7 Conclusions We have shown how two very different programming styles for reactive kernels may be mixed, having a common semantical basis. Programming experience has shown that the imperative style of Argos, together with its hierarchical structure, are adequate for expressing interruptions, or exceptions. On the other hand, the declarative style of Lustre is adequate for describing the regular behaviors. The example given in the paper is a typical case where the overall structure is better described with an imperative style, while the regular behavior is better described with a declarative style. We propose an implementation in which the mixed language programs are translated into single language programs and then compiled by the existing compiler of this language. This is a way of using the functionalities of both programming environments for the mixed language. Further work must be devoted to: the detection of non-causal situations intrinsic to the synchronous broadcast in Argos; the use of clocks in Lustre; non Boolean data in Lustre and valued signals in Argos. We are now working on the extension of the mixed language to non Boolean data. Reintroducing clocks in the Lustre part requires an extension of the model of reactive systems. Acknowledgments We would like to thank Nicolas Halbwachs for his helpful comments. References 111 G. Berry and G. Gonthier. The esterel synchronous programming language: Design, semantics, implementation. Technical report, 842, INRIA, [2] G. Berry and G. Gonthier. The Esterel synchronous programming language: Design, semantics, implementation. Science Of Computer Programming, 19(2):87-152, [3] P. Caspi, N. Halbwachs, D. Pilaud, and J. Plaice. Lustre, a declarative language for programming synchronous systems. In 14th Symposium on Principles of Programming Languages, January [4] P. Le Guernic, A. Benveniste, P. Bournai, and T. Gauthier. Signal: A data flow oriented language for signal processing. Technical report, IRISA report 246, IRISA, Rennes, France, [5] N. Halbwachs. Synchronous programming of reactive systems. Kluwer Academic Pub., [6] D. Hare1 and A. Pnueli. On the development of reactive systems. In Logic and Models of Concurrent Systems, NATO Advanced Study Insiatute on Logics and Models for Verification and Specification of Concurrent Systems, volume 13. NATO AS1 series F, Springer Verlag, [7] Another look at real-time programming. Special Section of the Proceedings of the IEEE, 79(9), September [8] F. Maraninchi. 0perat.ional and compositional semantics of synchronous automaton compositions. In CONCUR. LNCS 630, Springer Verlag, August

Introduction 2 The first synchronous language (early 80 s) Gérard Berry and his team (École des Mines de Paris / INRIA Sophia-Antipolis) Imperative, s

Introduction 2 The first synchronous language (early 80 s) Gérard Berry and his team (École des Mines de Paris / INRIA Sophia-Antipolis) Imperative, s Pascal Raymond, Verimag-CNRS Introduction 2 The first synchronous language (early 80 s) Gérard Berry and his team (École des Mines de Paris / INRIA Sophia-Antipolis) Imperative, sequential style (i.e.

More information

Synchronous reactive programming

Synchronous reactive programming Synchronous reactive programming Marcus Sundman Department of Computer Science Åbo Akademi University, FIN-20520 Åbo, Finland e-mail: marcus.sundman@iki.fi URL: http://www.iki.fi/marcus.sundman/ Abstract

More information

The Esterel language

The Esterel language Pascal Raymond, Verimag-CNRS Introduction 2 The first synchronous language (early 80 s) Gérard Berry and his team (École des Mines de Paris / INRIA Sophia-Antipolis) Imperative, sequential style (i.e.

More information

Argos: an automaton-based synchronous language

Argos: an automaton-based synchronous language Computer Languages 27 (2001) 61 92 www.elsevier.com/locate/complang Argos: an automaton-based synchronous language Florence Maraninchi a;, Yann Remond b a VERIMAG 1 /Institut National Polytechnique de

More information

Reactive Types. Jean-Pierre Talpin. Campus de Beaulieu, Rennes, France.

Reactive Types. Jean-Pierre Talpin. Campus de Beaulieu, Rennes, France. Reactive Types Jean-Pierre Talpin IRISA (INRIA-Rennes & CNRS URA 227) Campus de Beaulieu, 35000 Rennes, France E-mail: talpin@irisa.fr Abstract. Synchronous languages, such as Signal, are best suited for

More information

Simulink/Stateflow. June 2008

Simulink/Stateflow. June 2008 Simulink/Stateflow Paul Caspi http://www-verimag.imag.fr/ Pieter Mosterman http://www.mathworks.com/ June 2008 1 Introduction Probably, the early designers of Simulink in the late eighties would have been

More information

Mode-Automata based Methodology for Scade

Mode-Automata based Methodology for Scade Mode-Automata based Methodology for Scade Ouassila Labbani, Jean-Luc Dekeyser, Pierre Boulet To cite this version: Ouassila Labbani, Jean-Luc Dekeyser, Pierre Boulet. Mode-Automata based Methodology for

More information

Clock-directed Modular Code-generation for Synchronous Data-flow Languages

Clock-directed Modular Code-generation for Synchronous Data-flow Languages 1 Clock-directed Modular Code-generation for Synchronous Data-flow Languages Dariusz Biernacki Univ. of Worclaw (Poland) Jean-Louis Colaço Prover Technologies (France) Grégoire Hamon The MathWorks (USA)

More information

Lecture 2. The SCADE Language Data Flow Kernel. Daniel Kästner AbsInt GmbH 2012

Lecture 2. The SCADE Language Data Flow Kernel. Daniel Kästner AbsInt GmbH 2012 Lecture 2 The SCADE Language Data Flow Kernel Daniel Kästner AbsInt GmbH 2012 2 Synchronous Programming Two simple ways of implementing reactive systems: Event-driven Foreach input_event

More information

The Lustre Language Synchronous Programming Pascal Raymond, Nicolas Halbwachs Verimag-CNRS

The Lustre Language Synchronous Programming Pascal Raymond, Nicolas Halbwachs Verimag-CNRS The Lustre Language Synchronous Programming Pascal Raymond, Nicolas Halbwachs Verimag-CNRS Data-flow approach 2 A program = a network of operators connected by wires Rather classical (control theory, circuits)

More information

XEVE, an ESTEREL Verification Environment

XEVE, an ESTEREL Verification Environment XEVE, an ESTEREL Verification Environment Amar Bouali INRIA, B.P. 93, F-06902 Sophia-Antipolis cedex amar@sophia, inria, fr Abstract. We describe the verification methods and tools we are currently developing

More information

Efficient compilation of array iterators for Lustre

Efficient compilation of array iterators for Lustre Replace this file with prentcsmacro.sty for your meeting, or with entcsmacro.sty for your meeting. Both can be found at the ENTCS Macro Home Page. Efficient compilation of array iterators for Lustre Lionel

More information

An Introduction to Lustre

An Introduction to Lustre An Introduction to Lustre Monday Oct 06, 2014 Philipp Rümmer Uppsala University Philipp.Ruemmer@it.uu.se 1/35 ES Programming languages Which language to write embedded software in? Traditional: low-level

More information

6.001 Notes: Section 6.1

6.001 Notes: Section 6.1 6.001 Notes: Section 6.1 Slide 6.1.1 When we first starting talking about Scheme expressions, you may recall we said that (almost) every Scheme expression had three components, a syntax (legal ways of

More information

LusRegTes: A Regression Testing Tool for Lustre Programs

LusRegTes: A Regression Testing Tool for Lustre Programs International Journal of Electrical and Computer Engineering (IJECE) Vol. 7, No. 5, October 2017, pp. 2635~2644 ISSN: 2088-8708, DOI: 10.11591/ijece.v7i5.pp2635-2644 2635 LusRegTes: A Regression Testing

More information

Synchronous Estelle: Just Another Synchronous Language?

Synchronous Estelle: Just Another Synchronous Language? Electronic Notes in Theoretical Computer Science 88 (2003) URL: http://www.elsevier.nl/locate/entcs/volume88.html 15 pages Synchronous Estelle: Just Another Synchronous Language? Miguel Riesco 1 Javier

More information

Hierarchical FSMs with Multiple CMs

Hierarchical FSMs with Multiple CMs Hierarchical FSMs with Multiple CMs Manaloor Govindarajan Balasubramanian Manikantan Bharathwaj Muthuswamy (aka Bharath) Reference: Hierarchical FSMs with Multiple Concurrency Models. Alain Girault, Bilung

More information

Lecture 3: Recursion; Structural Induction

Lecture 3: Recursion; Structural Induction 15-150 Lecture 3: Recursion; Structural Induction Lecture by Dan Licata January 24, 2012 Today, we are going to talk about one of the most important ideas in functional programming, structural recursion

More information

Chapter 2 Synchronous Programming: Overview

Chapter 2 Synchronous Programming: Overview Chapter 2 Synchronous Programming: Overview Abstract This chapter gives an overview of synchronous programming through the presentation of the main existing languages together with their associated tools.

More information

Specifying and executing reactive scenarios with Lutin

Specifying and executing reactive scenarios with Lutin Specifying and executing reactive scenarios with Lutin Pascal Raymond, Yvan Roux, Erwan Jahier 1 VERIMAG (CNRS, UJF, INPG) Grenoble, France 2 Abstract This paper presents the language Lutin and its operational

More information

Programming Embedded Systems

Programming Embedded Systems Programming Embedded Systems Lecture 10 An introduction to Lustre Wednesday Feb 15, 2012 Philipp Rümmer Uppsala University Philipp.Ruemmer@it.uu.se 1/34 Course topic: programming lang. Which language to

More information

Polyhedral Analysis for Synchronous Languages

Polyhedral Analysis for Synchronous Languages Polyhedral Analysis for Synchronous Languages Frdric Besson, Thomas Jensen, and Jean-Pierre Talpin Irisa/Cnrs/Inria Campus de Beaulieu, F-35042 Rennes Cedex, France {fbesson,jensen,talpin}@irisa.fr Abstract.

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

Synchronous Specification

Synchronous Specification Translation Validation for Synchronous Specification in the Signal Compiler Van-Chan Ngo Jean-Pierre Talpin Thierry Gautier INRIA Rennes, France FORTE 2015 Construct a modular translation validationbased

More information

SIGNAL A DECLAF:~TIVE LANGUAGE FOR SYNCHRONOUS PROGRAMMING OF REAL-TIME SYSTEMS

SIGNAL A DECLAF:~TIVE LANGUAGE FOR SYNCHRONOUS PROGRAMMING OF REAL-TIME SYSTEMS SIGNAL A DECLAF:~TIVE LANGUAGE FOR SYNCHRONOUS PROGRAMMING OF REAL-TIME SYSTEMS Thierry GAUTIER, Paul LE GUERNIC IRISA / INRIA Loi'c BESNARD ClCB / CNRS Campus de Beaulieu, 35042 Rennes Cedex, FRANCE Telephone

More information

Application: Programming Language Semantics

Application: Programming Language Semantics Chapter 8 Application: Programming Language Semantics Prof. Dr. K. Madlener: Specification and Verification in Higher Order Logic 527 Introduction to Programming Language Semantics Programming Language

More information

Programming with Lustre

Programming with Lustre Programming with 1 Using tools This tutorial shows how to use the tool on a tiny program (the rising edge detector). You can indeed write your own program and experiment with it. 1.1 Writing the edge program

More information

Synchronous Statecharts. Christian Motika

Synchronous Statecharts. Christian Motika Execution (KlePto) Esterel to transformation (KIES) Synchronous Statecharts for executing Esterel with Ptolemy Christian Motika Real-Time Systems and Embedded Systems Group Department of Computer Science

More information

Tutorial and Reference Manual

Tutorial and Reference Manual Zélus: a Synchronous Language with ODEs Release, version 1.2 Tutorial and Reference Manual http://zelus.di.ens.fr Marc Pouzet Albert Benveniste, Timothy Bourke and Benoit Caillaud Inria Project Team PARKAS,

More information

A Lift Controller in Lustre. (a case study in developing a reactive system) Leszek Holenderski

A Lift Controller in Lustre. (a case study in developing a reactive system) Leszek Holenderski Presented at 5 th Nordic Workshop on Program Correctness, Turku, Finland, October 25{28, 1993. Published in Proc. of the 5 th Nordic Workshop on Program Correctness, ed. R.J.R. Back and K. Sere, Abo Akademi

More information

Modeling Statecharts and Activitycharts as Signal Equations

Modeling Statecharts and Activitycharts as Signal Equations Modeling Statecharts and Activitycharts as Signal Equations J.-R. BEAUVAIS IRISA/INRIA-Rennes E. RUTTEN INRIA Rhône-Alpes and T. GAUTIER, R. HOUDEBINE, P. LE GUERNIC, and Y.-M. TANG IRISA/INRIA-Rennes

More information

Section 8. The Basic Step Algorithm

Section 8. The Basic Step Algorithm Section 8. The Basic Step Algorithm Inputs The status of the system The current time A list of external changes presented by the environment since the last step Comments Scheduled action appears in the

More information

Processadors de Llenguatge II. Functional Paradigm. Pratt A.7 Robert Harper s SML tutorial (Sec II)

Processadors de Llenguatge II. Functional Paradigm. Pratt A.7 Robert Harper s SML tutorial (Sec II) Processadors de Llenguatge II Functional Paradigm Pratt A.7 Robert Harper s SML tutorial (Sec II) Rafael Ramirez Dep Tecnologia Universitat Pompeu Fabra Paradigm Shift Imperative Paradigm State Machine

More information

UML Profile for MARTE: Time Model and CCSL

UML Profile for MARTE: Time Model and CCSL UML Profile for MARTE: Time Model and CCSL Frédéric Mallet 1 Université Nice Sophia Antipolis, Aoste team INRIA/I3S, Sophia Antipolis, France Frederic.Mallet@unice.fr Abstract. This 90 minutes tutorial

More information

CMSC 330: Organization of Programming Languages. Formal Semantics of a Prog. Lang. Specifying Syntax, Semantics

CMSC 330: Organization of Programming Languages. Formal Semantics of a Prog. Lang. Specifying Syntax, Semantics Recall Architecture of Compilers, Interpreters CMSC 330: Organization of Programming Languages Source Scanner Parser Static Analyzer Operational Semantics Intermediate Representation Front End Back End

More information

Predicting and Learning Executability of Composite Web Services

Predicting and Learning Executability of Composite Web Services Predicting and Learning Executability of Composite Web Services Masahiro Tanaka and Toru Ishida Department of Social Informatics, Kyoto University Kyoto 606-8501 Japan mtanaka@ai.soc.i.kyoto-u.ac.jp, ishida@i.kyoto-u.ac.jp

More information

The Synchronous System Description Language PURR?

The Synchronous System Description Language PURR? The Synchronous System Description Language PURR? Thomas Kropf, Jürgen Ruf, Klaus Schneider, and Markus Wild University of Karlsruhe, Department of Computer Science, Institute for Computer Design and Fault

More information

Denotational Semantics. Domain Theory

Denotational Semantics. Domain Theory Denotational Semantics and Domain Theory 1 / 51 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning

More information

Automatic Distribution of Reactive Systems for Asynchronous Networks of Processors

Automatic Distribution of Reactive Systems for Asynchronous Networks of Processors 416 IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL 25, NO 3, MAY/JUNE 1999 Automatic Distribution of Reactive Systems for Asynchronous Networks of Processors Paul Caspi, Alain Girault, and Daniel Pilaud

More information

Logical-Time Contracts for Reactive Embedded Components

Logical-Time Contracts for Reactive Embedded Components Logical-Time Contracts for Reactive Embedded Components Florence Maraninchi Lionel Morel VERIMAG, Centre Equation, 2 avenue de Vignate, F38610 GIERES (Florence.Maraninchi Lionel.Morel)@imag.fr Abstract

More information

FROM SYNCHRONOUS SPECIFICATIONS TO ASYNCHRONOUS DISTRIBUTED IMPLEMENTATIONS Technische Universitiit Miinchen Peter Scholz

FROM SYNCHRONOUS SPECIFICATIONS TO ASYNCHRONOUS DISTRIBUTED IMPLEMENTATIONS Technische Universitiit Miinchen Peter Scholz FROM SYNCHRONOUS SPECIFICATIONS TO ASYNCHRONOUS DISTRIBUTED IMPLEMENTATIONS Technische Universitiit Miinchen Peter Scholz In this contribution, we sketch a design process for reactive systems, specified

More information

QUTE: A PROLOG/LISP TYPE LANGUAGE FOR LOGIC PROGRAMMING

QUTE: A PROLOG/LISP TYPE LANGUAGE FOR LOGIC PROGRAMMING QUTE: A PROLOG/LISP TYPE LANGUAGE FOR LOGIC PROGRAMMING Masahiko Sato Takafumi Sakurai Department of Information Science, Faculty of Science University of Tokyo 7-3-1 Hongo, Bunkyo-ku, Tokyo 113, JAPAN

More information

Contents. Chapter 1 SPECIFYING SYNTAX 1

Contents. Chapter 1 SPECIFYING SYNTAX 1 Contents Chapter 1 SPECIFYING SYNTAX 1 1.1 GRAMMARS AND BNF 2 Context-Free Grammars 4 Context-Sensitive Grammars 8 Exercises 8 1.2 THE PROGRAMMING LANGUAGE WREN 10 Ambiguity 12 Context Constraints in Wren

More information

RLucid, a general real-time dataflow language

RLucid, a general real-time dataflow language RLucid, a general real-time dataflow language John A. Plaice Department of Computer Science, University of Ottawa 150 Louis Pasteur, Ottawa, Ontario, CANADA K1N 6N5 (Unceded Algonquin Land) e-mail: plaice@@csi.uottawa.ca

More information

ECL: A SPECIFICATION ENVIRONMENT FOR SYSTEM-LEVEL DESIGN

ECL: A SPECIFICATION ENVIRONMENT FOR SYSTEM-LEVEL DESIGN / ECL: A SPECIFICATION ENVIRONMENT FOR SYSTEM-LEVEL DESIGN Gerard Berry Ed Harcourt Luciano Lavagno Ellen Sentovich Abstract We propose a new specification environment for system-level design called ECL.

More information

Automatic State Reaching for Debugging Reactive Programs

Automatic State Reaching for Debugging Reactive Programs Automatic State Reaching for Debugging Reactive Programs F. Gaucher 1, E. Jahier 1, B. Jeannet 2, and F. Maraninchi 1 1 VERIMAG, Centre Equation, 2 Av. de Vignate, 38610 Gieres, France {Fabien.Gaucher,

More information

CIS 1.5 Course Objectives. a. Understand the concept of a program (i.e., a computer following a series of instructions)

CIS 1.5 Course Objectives. a. Understand the concept of a program (i.e., a computer following a series of instructions) By the end of this course, students should CIS 1.5 Course Objectives a. Understand the concept of a program (i.e., a computer following a series of instructions) b. Understand the concept of a variable

More information

Lecture 3. The SCADE Language Data Flow Kernel. Daniel Kästner AbsInt GmbH 2012

Lecture 3. The SCADE Language Data Flow Kernel. Daniel Kästner AbsInt GmbH 2012 Lecture 3 The SCADE Language Data Flow Kernel Daniel Kästner AbsInt GmbH 2012 2 3 Semantic Checks node minmax (in: int) returns (min, max: int) min = 0-> if (in < min) then in else min; max = 0-> if (in

More information

Cyber Physical System Verification with SAL

Cyber Physical System Verification with SAL Cyber Physical System Verification with July 22, 2013 Cyber Physical System Verification with Outline 1 2 3 4 5 Cyber Physical System Verification with Table of Contents 1 2 3 4 5 Cyber Physical System

More information

Safe Reactive Programming: the FunLoft Proposal

Safe Reactive Programming: the FunLoft Proposal Safe Reactive Programming: the FunLoft Proposal Frédéric Boussinot MIMOSA Project, Inria Sophia-Antipolis (Joint work with Frédéric Dabrowski) http://www.inria.fr/mimosa/rp With support from ALIDECS SYNCHRON

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

CONVENTIONAL EXECUTABLE SEMANTICS. Grigore Rosu CS422 Programming Language Design

CONVENTIONAL EXECUTABLE SEMANTICS. Grigore Rosu CS422 Programming Language Design CONVENTIONAL EXECUTABLE SEMANTICS Grigore Rosu CS422 Programming Language Design Conventional Semantic Approaches A language designer should understand the existing design approaches, techniques and tools,

More information

Formal Definition of Computation. Formal Definition of Computation p.1/28

Formal Definition of Computation. Formal Definition of Computation p.1/28 Formal Definition of Computation Formal Definition of Computation p.1/28 Computation model The model of computation considered so far is the work performed by a finite automaton Formal Definition of Computation

More information

EE382N.23: Embedded System Design and Modeling

EE382N.23: Embedded System Design and Modeling EE382N.23: Embedded System Design and Modeling Lecture 3 Language Semantics Andreas Gerstlauer Electrical and Computer Engineering University of Texas at Austin gerstl@ece.utexas.edu Lecture 3: Outline

More information

Project IST , COLUMBUS. Design of Embedded Controllers for Safety Critical Systems. Deliverables DMM1 and DMM2

Project IST , COLUMBUS. Design of Embedded Controllers for Safety Critical Systems. Deliverables DMM1 and DMM2 Project IST 200 3834, COLUMBUS Design of Embedded Controllers for Safety Critical Systems Deliverables DMM and DMM2 Report on formal framework of meta models resp. INRIA Authors: B. CAILLAUD (INRIA) and

More information

Specifications Part 1

Specifications Part 1 pm3 12 Specifications Part 1 Embedded System Design Kluwer Academic Publisher by Peter Marwedel TU Dortmund 2008/11/15 ine Marwedel, 2003 Graphics: Alexandra Nolte, Ges Introduction 12, 2008-2 - 1 Specification

More information

Fusing Dataflow with Finite State Machines

Fusing Dataflow with Finite State Machines May 3, 1996 U N T H E I V E R S I T Y A O F LE T TH E R E B E 1 8 6 8 LIG H T C A L I A I F O R N Fusing Dataflow with Finite State Machines Department of Electrical Engineering and Computer Science Bilung

More information

Chapter 2 The Language PCF

Chapter 2 The Language PCF Chapter 2 The Language PCF We will illustrate the various styles of semantics of programming languages with an example: the language PCF Programming language for computable functions, also called Mini-ML.

More information

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY JOURNAL OF OBJECT TECHNOLOGY Online at www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2002 Vol. 1, No. 2, July-August 2002 The Theory of Classification Part 2: The Scratch-Built

More information

Formal semantics of loosely typed languages. Joep Verkoelen Vincent Driessen

Formal semantics of loosely typed languages. Joep Verkoelen Vincent Driessen Formal semantics of loosely typed languages Joep Verkoelen Vincent Driessen June, 2004 ii Contents 1 Introduction 3 2 Syntax 5 2.1 Formalities.............................. 5 2.2 Example language LooselyWhile.................

More information

Object-Oriented Theories for Model Driven Architecture

Object-Oriented Theories for Model Driven Architecture Object-Oriented Theories for Model Driven Architecture Tony Clark 1, Andy Evans 2, Robert France 3 1 King s College London, UK, anclark@dcs.kcl.ac.uk, 2 University of York, UK, andye@cs.york.ac.uk, 3 University

More information

An Eect Type System for Modular Distribution of Dataow Programs

An Eect Type System for Modular Distribution of Dataow Programs An Eect Type System for Modular Distribution of Dataow Programs Gwenaël Delaval 1 Alain Girault 1 Marc Pouzet 2 P P 1 INRIA Rhône-Alpes, Pop-Art project ART 2 LRI, Demons team June 13, 2008 LCTES, Tucson,

More information

CMSC 330: Organization of Programming Languages

CMSC 330: Organization of Programming Languages CMSC 330: Organization of Programming Languages Operational Semantics CMSC 330 Summer 2018 1 Formal Semantics of a Prog. Lang. Mathematical description of the meaning of programs written in that language

More information

A Verification Approach for GALS Integration of Synchronous Components

A Verification Approach for GALS Integration of Synchronous Components GALS 2005 Preliminary Version A Verification Approach for GALS Integration of Synchronous Components F. Doucet, M. Menarini, I. H. Krüger and R. Gupta 1 Computer Science and Engineering University of California,

More information

Chapter 3: Propositional Languages

Chapter 3: Propositional Languages Chapter 3: Propositional Languages We define here a general notion of a propositional language. We show how to obtain, as specific cases, various languages for propositional classical logic and some non-classical

More information

The synchronous data-flow language Lustre

The synchronous data-flow language Lustre The synchronous data-flow language Lustre Nicolas Halbwachs Verimag-CNRS Grenoble France 1 Introduction The synchronous language Lustre was designed in the eighties, and resulted in the industrial software

More information

CS 4110 Programming Languages & Logics. Lecture 17 Programming in the λ-calculus

CS 4110 Programming Languages & Logics. Lecture 17 Programming in the λ-calculus CS 4110 Programming Languages & Logics Lecture 17 Programming in the λ-calculus 10 October 2014 Announcements 2 Foster Office Hours 11-12 Enjoy fall break! Review: Church Booleans 3 We can encode TRUE,

More information

Prof. Dr. Reinhard von Hanxleden. Christian-Albrechts Universität Kiel Department of Computer Science Real-Time Systems and Embedded Systems Group

Prof. Dr. Reinhard von Hanxleden. Christian-Albrechts Universität Kiel Department of Computer Science Real-Time Systems and Embedded Systems Group Design of Embedded Systems: Models, Validation and Synthesis (EE 249) Lecture 4a Prof. Dr. Reinhard von Hanxleden Christian-Albrechts Universität Kiel Department of Computer Science Real-Time Systems and

More information

Data Flow Analysis using Program Graphs

Data Flow Analysis using Program Graphs Data Flow Analysis using Program Graphs Michal Terepeta Supervised by Professor Hanne Riis Nielson Professor Andrzej Napieralski Kongens Lyngby 2010 Technical University of Denmark Informatics and Mathematical

More information

Verilog Tutorial - Edited for CS141

Verilog Tutorial - Edited for CS141 - Edited for CS141 Lukasz Strozek October 8, 2005 Based on Weste and Harris and Verilog According to Tom 1 Introduction Verilog is language commonly used in designing digital systems. It s a hardware description

More information

1. Draw the state graphs for the finite automata which accept sets of strings composed of zeros and ones which:

1. Draw the state graphs for the finite automata which accept sets of strings composed of zeros and ones which: P R O B L E M S Finite Autom ata. Draw the state graphs for the finite automata which accept sets of strings composed of zeros and ones which: a) Are a multiple of three in length. b) End with the string

More information

A Formal Model for Web-Service Composition

A Formal Model for Web-Service Composition Simon Foster Department of Computer Science University of Sheffield http://www.dcs.shef.ac.uk/~simonf BCTCS 2006 Outline 1 Composing Web-Services Current Technologies 2 3 4 Outline

More information

Semantics. A. Demers Jan This material is primarily from Ch. 2 of the text. We present an imperative

Semantics. A. Demers Jan This material is primarily from Ch. 2 of the text. We present an imperative CS411 Notes 1: IMP and Large Step Operational Semantics A. Demers 23-25 Jan 2001 This material is primarily from Ch. 2 of the text. We present an imperative language called IMP; wegive a formal definition

More information

Towards the semantics of recursive procedures in categorical terms

Towards the semantics of recursive procedures in categorical terms Central Page 235 of 250 Towards the semantics of recursive procedures in categorical terms William Steingartner, Valerie Novitzká Faculty of Electrical Engineering and Informatics Technical University

More information

Symbolic Synthesis of Knowledge-based Program Implementations with Synchronous Semantics

Symbolic Synthesis of Knowledge-based Program Implementations with Synchronous Semantics Symbolic Synthesis of Knowledge-based Program Implementations with Synchronous Semantics X. Huang xiaoweih@cse.unsw.edu.au R. van der Meyden meyden@cse.unsw.edu.au ABSTRACT This paper deals with the automated

More information

Declarative programming. Logic programming is a declarative style of programming.

Declarative programming. Logic programming is a declarative style of programming. Declarative programming Logic programming is a declarative style of programming. Declarative programming Logic programming is a declarative style of programming. The programmer says what they want to compute,

More information

A PRIMITIVE EXECUTION MODEL FOR HETEROGENEOUS MODELING

A PRIMITIVE EXECUTION MODEL FOR HETEROGENEOUS MODELING A PRIMITIVE EXECUTION MODEL FOR HETEROGENEOUS MODELING Frédéric Boulanger Supélec Département Informatique, 3 rue Joliot-Curie, 91192 Gif-sur-Yvette cedex, France Email: Frederic.Boulanger@supelec.fr Guy

More information

Functional programming with Common Lisp

Functional programming with Common Lisp Functional programming with Common Lisp Dr. C. Constantinides Department of Computer Science and Software Engineering Concordia University Montreal, Canada August 11, 2016 1 / 81 Expressions and functions

More information

Model-based Code Generation: Esterel Scade. Daniel Kästner AbsInt Angewandte Informatik GmbH

Model-based Code Generation: Esterel Scade. Daniel Kästner AbsInt Angewandte Informatik GmbH Model-based Code Generation: Esterel Scade Daniel Kästner kaestner@absint.com AbsInt Angewandte Informatik GmbH AbsInt GmbH 2 Model-based Software Development 3 Model is software specification. Hardware/Software

More information

Early design phases. Peter Marwedel TU Dortmund, Informatik /10/11. technische universität dortmund. fakultät für informatik informatik 12

Early design phases. Peter Marwedel TU Dortmund, Informatik /10/11. technische universität dortmund. fakultät für informatik informatik 12 12 Early design phases Peter Marwedel TU Dortmund, Informatik 12 2010/10/11 These slides use Microsoft clip arts. Microsoft copyright restrictions apply. Graphics: Alexandra Nolte, Gesine Marwedel, 2003

More information

Automata Theory for Reasoning about Actions

Automata Theory for Reasoning about Actions Automata Theory for Reasoning about Actions Eugenia Ternovskaia Department of Computer Science, University of Toronto Toronto, ON, Canada, M5S 3G4 eugenia@cs.toronto.edu Abstract In this paper, we show

More information

Structure of Abstract Syntax trees for Colored Nets in PNML

Structure of Abstract Syntax trees for Colored Nets in PNML Structure of Abstract Syntax trees for Colored Nets in PNML F. Kordon & L. Petrucci Fabrice.Kordon@lip6.fr Laure.Petrucci@lipn.univ-paris13.fr version 0.2 (draft) June 26, 2004 Abstract Formalising the

More information

A New Statement for Selection and Exception Handling in Imperative Languages arxiv: v3 [cs.pl] 24 Aug 2015

A New Statement for Selection and Exception Handling in Imperative Languages arxiv: v3 [cs.pl] 24 Aug 2015 A New Statement for Selection and Exception Handling in Imperative Languages arxiv:1308.4452v3 [cs.pl] 24 Aug 2015 Keehang Kwon Dept. of Computer Engineering, DongA University 840 hadan saha, Busan 604-714,

More information

Model Checking VHDL with CV

Model Checking VHDL with CV Model Checking VHDL with CV David Déharbe 1, Subash Shankar 2, and Edmund M. Clarke 2 1 Universidade Federal do Rio Grande do Norte, Natal, Brazil david@dimap.ufrn.br 2 Carnegie Mellon University, Pittsburgh,

More information

Synchronous Formal Design of Cyber-Physical Systems

Synchronous Formal Design of Cyber-Physical Systems 1 Context Synchronous Formal Design of Cyber-Physical Systems The project conducted by Centre de recherche de l ECE Paris (axis Systèmes Intelligent et Communiquants) in collaboration with other institutions

More information

Functional Languages. Hwansoo Han

Functional Languages. Hwansoo Han Functional Languages Hwansoo Han Historical Origins Imperative and functional models Alan Turing, Alonzo Church, Stephen Kleene, Emil Post, etc. ~1930s Different formalizations of the notion of an algorithm

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

A Transactional Model and Platform for Designing and Implementing Reactive Systems

A Transactional Model and Platform for Designing and Implementing Reactive Systems A Transactional Model and Platform for Designing and Implementing Reactive Systems Justin R. Wilson A dissertation presented to the Graduate School of Arts and Sciences of Washington University in partial

More information

CONVENTIONAL EXECUTABLE SEMANTICS. Grigore Rosu CS522 Programming Language Semantics

CONVENTIONAL EXECUTABLE SEMANTICS. Grigore Rosu CS522 Programming Language Semantics CONVENTIONAL EXECUTABLE SEMANTICS Grigore Rosu CS522 Programming Language Semantics Conventional Semantic Approaches A language designer should understand the existing design approaches, techniques and

More information

The architecture of Eiffel software 3.1 OVERVIEW classes clusters systems

The architecture of Eiffel software 3.1 OVERVIEW classes clusters systems 3 Draft 5.02.00-0, 15 August 2005 (Santa Barbara). Extracted from ongoing work on future third edition of Eiffel: The Language. Copyright Bertrand Meyer 1986-2005. Access restricted to purchasers of the

More information

Principles of Real-Time Programming

Principles of Real-Time Programming Principles of Real-Time Programming Christoph M. Kirsch Department of Electrical Engineering and Computer Sciences University of California, Berkeley cm@eecs.berkeley.edu Abstract. Real-time programming

More information

Com S 541. Programming Languages I

Com S 541. Programming Languages I Programming Languages I Lecturer: TA: Markus Lumpe Department of Computer Science 113 Atanasoff Hall http://www.cs.iastate.edu/~lumpe/coms541.html TR 12:40-2, W 5 Pramod Bhanu Rama Rao Office hours: TR

More information

Timing Analysis Enhancement for Synchronous Program

Timing Analysis Enhancement for Synchronous Program Timing Analysis Enhancement for Synchronous Program Extended Abstract Pascal Raymond, Claire Maiza, Catherine Parent-Vigouroux, Fabienne Carrier, and Mihail Asavoae Grenoble-Alpes University Verimag, Centre

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

LECTURE 16. Functional Programming

LECTURE 16. Functional Programming LECTURE 16 Functional Programming WHAT IS FUNCTIONAL PROGRAMMING? Functional programming defines the outputs of a program as a mathematical function of the inputs. Functional programming is a declarative

More information

CSCC24 Functional Programming Scheme Part 2

CSCC24 Functional Programming Scheme Part 2 CSCC24 Functional Programming Scheme Part 2 Carolyn MacLeod 1 winter 2012 1 Based on slides from Anya Tafliovich, and with many thanks to Gerald Penn and Prabhakar Ragde. 1 The Spirit of Lisp-like Languages

More information

Relational Database: The Relational Data Model; Operations on Database Relations

Relational Database: The Relational Data Model; Operations on Database Relations Relational Database: The Relational Data Model; Operations on Database Relations Greg Plaxton Theory in Programming Practice, Spring 2005 Department of Computer Science University of Texas at Austin Overview

More information

Z Notation. June 21, 2018

Z Notation. June 21, 2018 Z Notation June 21, 2018 1 Definitions There are many different ways to introduce an object in a Z specification: declarations, abbreviations, axiomatic definitions, and free types. Keep in mind that the

More information

INCONSISTENT DATABASES

INCONSISTENT DATABASES INCONSISTENT DATABASES Leopoldo Bertossi Carleton University, http://www.scs.carleton.ca/ bertossi SYNONYMS None DEFINITION An inconsistent database is a database instance that does not satisfy those integrity

More information

On the Finiteness of the Recursive Chromatic Number

On the Finiteness of the Recursive Chromatic Number On the Finiteness of the Recursive Chromatic Number William I Gasarch Andrew C.Y. Lee Abstract A recursive graph is a graph whose vertex and edges sets are recursive. A highly recursive graph is a recursive

More information