Complex Systems Design &DistributedCalculusandCoordination

Size: px
Start display at page:

Download "Complex Systems Design &DistributedCalculusandCoordination"

Transcription

1 Complex Systems Design &DistributedCalculusandCoordination Concurrency and Process Algebras: Theory and Practice - Klaim Francesco Tiezzi University of Camerino francesco.tiezzi@unicam.it A.A. 2014/2015 F. Tiezzi (Unicam) CoSyDesign & DCC 1/ 45

2 Outline 1 Motivations 2 Klaim syntax 3 Klaim semantics 4 An example 5 Klaim implementation F. Tiezzi (Unicam) CoSyDesign & DCC 2/ 45

3 Original goal Motivations Programming Global Computers: distributed software architecture models Large number of heterogeneous and autonomous components Wide area distribution, manifest to application programmers Different authorities with different administrative and security policies Components with highly dynamic behavior that must adapt to unpredictable changes over time oftheenvironment,duee.g.to lack of services node failures network reconfiguration... Mobile components must support heterogeneity and interoperability, as they may detach from a node and re-attach later on a different one Openended, loosely coupled, possibly collaborative settings F. Tiezzi (Unicam) CoSyDesign & DCC 3/ 45

4 Motivations Programming Global Computers Programming Languages would definitely benefit from explicit primitives for Concurrency considering parallel and non-deterministic computations Distribution computing over different (explicit) localities Mobility moving code and processes over localities and from formal semantics and associated tools for Reasoning on programs behaviour F. Tiezzi (Unicam) CoSyDesign & DCC 4/ 45

5 The spatial dimension Motivations Many foundational languages have been designed that features mechanisms for coordinating and monitoring the use of resources for code and process mobility for managing security All these foundational languages encompass a notion of location to reflect the idea of administrative domains to model the fact that computations at a certain location are under the control of a specific authority They focus on the spatial dimension of GC programming (which is often referred to as network awareness) F. Tiezzi (Unicam) CoSyDesign & DCC 5/ 45

6 Motivations Card game F. Tiezzi (Unicam) CoSyDesign & DCC 6 / 45

7 Motivations Klaim design goal Developing a simple programming language and associated tools for network aware and mobile applications with a tractable semantic theory that permits programs verification Our Starting Points ( ) Process Algebras CCS, CSP,... Calculi and languages for Mobility Pi-calculus, Obliq, Ambients,... Tuple-based Interaction Models Linda Modal and Temporal Logics HML, CTL, ACTL, µ-calculus,... F. Tiezzi (Unicam) CoSyDesign & DCC 7/ 45

8 Klaim: mainingredients Motivations Kernel Language for Agent Interaction and Mobility a formalism for concurrent, distributed and mobile systems Linda communication model Asynchronous communication Shared tuple spaces Pattern Matching Explicit use of localities Multiple distributed tuple spaces Code and process mobility Process Calculus flavored Small set of basic operators Clean operational semantics F. Tiezzi (Unicam) CoSyDesign & DCC 8/ 45

9 Klaim: mainingredients Motivations Kernel Language for Agent Interaction and Mobility a formalism for concurrent, distributed and mobile systems Linda communication model Asynchronous communication Shared tuple spaces Pattern Matching Explicit use of localities Multiple distributed tuple spaces Code and process mobility Process Calculus flavored Small set of basic operators Clean operational semantics F. Tiezzi (Unicam) CoSyDesign & DCC 8/ 45

10 Klaim: mainingredients Motivations Kernel Language for Agent Interaction and Mobility a formalism for concurrent, distributed and mobile systems Linda communication model Asynchronous communication Shared tuple spaces Pattern Matching Explicit use of localities Multiple distributed tuple spaces Code and process mobility Process Calculus flavored Small set of basic operators Clean operational semantics F. Tiezzi (Unicam) CoSyDesign & DCC 8/ 45

11 Klaim: mainingredients Motivations Kernel Language for Agent Interaction and Mobility a formalism for concurrent, distributed and mobile systems Linda communication model Asynchronous communication Shared tuple spaces Pattern Matching Explicit use of localities Multiple distributed tuple spaces Code and process mobility Process Calculus flavored Small set of basic operators Clean operational semantics F. Tiezzi (Unicam) CoSyDesign & DCC 8/ 45

12 Motivations Tuples and Pattern Matching Tuples: ( foo, , true) Actual Fields (i.e. expressions) Templates: (!s, 15,!b) Actual Fields Formal Fields (i.e. variables) Pattern Matching: Formal fields match any field of the same type Actual fields match if identical F. Tiezzi (Unicam) CoSyDesign & DCC 9/ 45

13 Motivations Tuples and Pattern Matching Tuples: ( foo, , true) Actual Fields (i.e. expressions) Templates: (!s, 15,!b) Actual Fields Formal Fields (i.e. variables) Pattern Matching: Formal fields match any field of the same type Actual fields match if identical F. Tiezzi (Unicam) CoSyDesign & DCC 9/ 45

14 Motivations Tuples and Pattern Matching Tuples: ( foo, , true) Actual Fields (i.e. expressions) Templates: (!s, 15,!b) Actual Fields Formal Fields (i.e. variables) Pattern Matching: Formal fields match any field of the same type Actual fields match if identical (!s, 15,!b) matches ( foo, 15, true) (!s, 15,!b) doesnot match ( foo, 10, true) F. Tiezzi (Unicam) CoSyDesign & DCC 9/ 45

15 Motivations Linda communication model Tuple Space F. Tiezzi (Unicam) CoSyDesign & DCC 10 / 45

16 Motivations Linda communication model out(t) Tuple Space F. Tiezzi (Unicam) CoSyDesign & DCC 10 / 45

17 Motivations Linda communication model out(t) Tuple Space eval(t) F. Tiezzi (Unicam) CoSyDesign & DCC 10 / 45

18 Motivations Linda communication model out(t) in(t ) Tuple Space eval(t) F. Tiezzi (Unicam) CoSyDesign & DCC 10 / 45

19 Motivations Linda communication model out(t) in(t ) Tuple Space eval(t) read(t ) F. Tiezzi (Unicam) CoSyDesign & DCC 10 / 45

20 From Linda to Klaim Motivations Localities to model distribution Physical localities (network addresses), i.e. names Logical localities (aliases for addresses), i.e. variables Adistinctvariableself indicates the node a process is on Local and remote operations to read/withdraw/write tuples, spawn processes, create nodes Allocation environments to associate physical to logical localities Logical localities are local aliases for network addresses Programmers may not know the exact network topology Process Calculi operators to specify behaviours Action prefix Parallel composition Name creation / scope delimitation F. Tiezzi (Unicam) CoSyDesign & DCC 11 / 45

21 From Linda to Klaim Motivations Localities to model distribution Physical localities (network addresses), i.e. names Logical localities (aliases for addresses), i.e. variables Adistinctvariableself indicates the node a process is on Local and remote operations to read/withdraw/write tuples, spawn processes, create nodes Allocation environments to associate physical to logical localities Logical localities are local aliases for network addresses Programmers may not know the exact network topology Process Calculi operators to specify behaviours Action prefix Parallel composition Name creation / scope delimitation F. Tiezzi (Unicam) CoSyDesign & DCC 11 / 45

22 From Linda to Klaim Motivations Localities to model distribution Physical localities (network addresses), i.e. names Logical localities (aliases for addresses), i.e. variables Adistinctvariableself indicates the node a process is on Local and remote operations to read/withdraw/write tuples, spawn processes, create nodes Allocation environments to associate physical to logical localities Logical localities are local aliases for network addresses Programmers may not know the exact network topology Process Calculi operators to specify behaviours Action prefix Parallel composition Name creation / scope delimitation F. Tiezzi (Unicam) CoSyDesign & DCC 11 / 45

23 From Linda to Klaim Motivations Localities to model distribution Physical localities (network addresses), i.e. names Logical localities (aliases for addresses), i.e. variables Adistinctvariableself indicates the node a process is on Local and remote operations to read/withdraw/write tuples, spawn processes, create nodes Allocation environments to associate physical to logical localities Logical localities are local aliases for network addresses Programmers may not know the exact network topology Process Calculi operators to specify behaviours Action prefix Parallel composition Name creation / scope delimitation F. Tiezzi (Unicam) CoSyDesign & DCC 11 / 45

24 Klaim Motivations Klaim consists of three layers: nets, processes, and actions Nets specify the overall structure of a system, including where processes and tuple spaces are located how nodes are interconnected Processes are the actors in this system and execute by performing actions F. Tiezzi (Unicam) CoSyDesign & DCC 12 / 45

25 Klaim Motivations Klaim consists of three layers: nets, processes, and actions Nets specify the overall structure of a system, including where processes and tuple spaces are located how nodes are interconnected Processes are the actors in this system and execute by performing actions F. Tiezzi (Unicam) CoSyDesign & DCC 12 / 45

26 Klaim Motivations Klaim consists of three layers: nets, processes, and actions Nets specify the overall structure of a system, including where processes and tuple spaces are located how nodes are interconnected Processes are the actors in this system and execute by performing actions F. Tiezzi (Unicam) CoSyDesign & DCC 12 / 45

27 Klaim Nodes Motivations Locality name (address) Allocation environment Processes Tuple Space F. Tiezzi (Unicam) CoSyDesign & DCC 13 / 45

28 Klaim Nodes Motivations Locality name (address) Allocation environment Processes Tuple Space s F. Tiezzi (Unicam) CoSyDesign & DCC 13 / 45

29 Klaim Nodes Motivations Locality name (address) Allocation environment Processes Tuple Space s ρ F. Tiezzi (Unicam) CoSyDesign & DCC 13 / 45

30 Klaim Nodes Motivations Locality name (address) Allocation environment Processes Tuple Space s ρ Q F. Tiezzi (Unicam) CoSyDesign & DCC 13 / 45

31 Klaim Nodes Motivations Locality name (address) Allocation environment Processes Tuple Space s ρ Q eval(p)@s F. Tiezzi (Unicam) CoSyDesign & DCC 13 / 45

32 Klaim Nodes Motivations Locality name (address) Allocation environment Processes Tuple Space s ρ P Q eval(p)@s F. Tiezzi (Unicam) CoSyDesign & DCC 13 / 45

33 Klaim Nodes Motivations Locality name (address) Allocation environment Processes Tuple Space s ρ P Q t 1 eval(p)@s F. Tiezzi (Unicam) CoSyDesign & DCC 13 / 45

34 Klaim Nodes Motivations Locality name (address) Allocation environment Processes Tuple Space s ρ P Q t 1 eval(p)@s out(t)@s F. Tiezzi (Unicam) CoSyDesign & DCC 13 / 45

35 Motivations Klaim Nodes Locality name (address) Allocation environment Processes Tuple Space s P ρ Q t 1 t 2 eval(p)@s out(t)@s F. Tiezzi (Unicam) CoSyDesign & DCC 13 / 45

36 Motivations Klaim Nodes Locality name (address) Allocation environment Processes Tuple Space s P ρ Q t 1 t 2 eval(p)@s out(t)@s in(t )@s F. Tiezzi (Unicam) CoSyDesign & DCC 13 / 45

37 Klaim Nodes Motivations Locality name (address) Allocation environment Processes Tuple Space s ρ P Q t 2 read(t )@s eval(p)@s out(t)@s in(t )@s F. Tiezzi (Unicam) CoSyDesign & DCC 13 / 45

38 Klaim Nodes Motivations Locality name (address) Allocation environment Processes Tuple Space s ρ newloc(s ) P Q t 2 read(t )@s eval(p)@s out(t)@s in(t )@s F. Tiezzi (Unicam) CoSyDesign & DCC 13 / 45

39 Klaim Nets Motivations s 2 l s 1, l s 3 out(t)@l t3 s 3 s 1 self s 3 t 1 t 2 in(t )@self F. Tiezzi (Unicam) CoSyDesign & DCC 14 / 45

40 Klaim: Syntax(1) Klaim syntax Locality names: s, s,... Locality variables: self, l, l,... l will stand for a locality name or a locality variable F. Tiezzi (Unicam) CoSyDesign & DCC 15 / 45

41 Klaim: Syntax(1) Klaim syntax Locality names: s, s,... Locality variables: self, l, l,... l will stand for a locality name or a locality variable Tuples: Templates: t ::= e l P t1, t 2 T ::= e l P! x! l! X T1, T 2 F. Tiezzi (Unicam) CoSyDesign & DCC 15 / 45

42 Klaim: Syntax(1) Klaim syntax Locality names: s, s,... Locality variables: self, l, l,... l will stand for a locality name or a locality variable Tuples: Templates: t ::= e l P t1, t 2 T ::= e l P! x! l! X T1, T 2 Actions: a ::= in(t )@l read(t )@l out(t)@l eval(p)@l newloc(s) exchanging data, spawning new processes, creating new nodes F. Tiezzi (Unicam) CoSyDesign & DCC 15 / 45

43 Klaim: Syntax(2) Klaim syntax Nets are plain collections of interconnected nodes Nodes have a unique address, an allocation environment and host components N ::= 0 s :: ρ C N 1 N 2 (νs)n F. Tiezzi (Unicam) CoSyDesign & DCC 16 / 45

44 Klaim: Syntax(2) Klaim syntax Nets are plain collections of interconnected nodes Nodes have a unique address, an allocation environment and host components N ::= 0 s :: ρ C N 1 N 2 (νs)n Components are evaluated tuples or running processes C ::= t P C 1 C 2 F. Tiezzi (Unicam) CoSyDesign & DCC 16 / 45

45 Klaim: Syntax(2) Klaim syntax Nets are plain collections of interconnected nodes Nodes have a unique address, an allocation environment and host components N ::= 0 s :: ρ C N 1 N 2 (νs)n Components are evaluated tuples or running processes C ::= t P C 1 C 2 Processes are built up from the inert process via action prefixing, parallel composition and process invocation (and definition) P ::= a.p P 1 P 2 A( p) (A( f ) P) F. Tiezzi (Unicam) CoSyDesign & DCC 16 / 45

46 Klaim: Syntax Klaim syntax Nets: Components: Processes: Actions: N ::= 0 s :: ρ C N 1 N 2 (νs)n P ::= C ::= t P C 1 C 2 a.p P 1 P 2 A( p) (A( f ) P) a ::= in(t )@l read(t )@l out(t)@l eval(p)@l newloc(s) Tuples: t ::= e l P t1, t 2 Templates: T ::= e l P! x! l! X T1, T 2 F. Tiezzi (Unicam) CoSyDesign & DCC 17 / 45

47 Binders Klaim semantics Prefix binds x, l, X in P (read acts similarly) Prefix newloc(s).p binds s in P Restriction (νs)n binds s in N F. Tiezzi (Unicam) CoSyDesign & DCC 18 / 45

48 Klaim semantics Klaim: StructuralCongruence Monoid laws for, i.e. N 0 N, N 1 N 2 N 2 N 1, (N 1 N 2 ) N 3 N 1 (N 2 N 3 ) (Alpha) N N if N = α N (RCom) (νs 1 )(νs 2 )N (νs 2 )(νs 1 )N (Ext) N 1 (νs)n 2 (νs)(n 1 N 2 ) if s fl(n 1 ) (Abs) s :: ρ C s :: ρ (C ) (Clone) s :: ρ C 1 C 2 s :: ρ C 1 s :: ρ C 2 (PDef) s :: ρ A( p) s :: ρ P[ p/ f ] if A( f ) P F. Tiezzi (Unicam) CoSyDesign & DCC 19 / 45

49 Klaim semantics Klaim: Operational Semantics (1) Producing data: ρ(l) =s E[[ t ]] ρ = t s :: ρ out(t)@l.p s :: ρ s :: ρ P s :: ρ t where the local environment ρ is used to determine the location s that is the target of the action function E[[ t ]]ρ replaces the free locality variables occurring in t according to the local environment ρ yielding t static binding discipline Remark: Free variables act as aliases that have to be replaced by network addresses F. Tiezzi (Unicam) CoSyDesign & DCC 20 / 45

50 Klaim semantics Klaim: Operational Semantics (2) Consuming data: ρ(l) =s match(e[[ T ]] ρ, t) =σ s :: ρ in(t )@l.p s :: ρ t s :: ρ Pσ s :: ρ where: function match(t, t) checkscompliance of E[[ T ]] ρ and t and associates values (i.e. basic values, names and processes) to variables bound by the template atuplematchesagainstatemplateiftheyhavethesamenumberof fields, and corresponding fields match σ is a substitution of names and processes for the free variables in T F. Tiezzi (Unicam) CoSyDesign & DCC 21 / 45

51 Matching Function Klaim semantics match(!x, v) =[v/x] match(v, v) =ϵ match(!l, s) =[s/l] match(s, s) =ϵ match(!x, P) =[P/X ] match(t 1, t 1 )=σ 1 match(t 2, t 2 )=σ 2 match((t 1, T 2 ), (t 1, t 2 )) = σ 1 σ 2 F. Tiezzi (Unicam) CoSyDesign & DCC 22 / 45

52 Klaim semantics Klaim: Operational Semantics (3) Accessing data: ρ(l) =s match(e[[ T ]] ρ, t) =σ s :: ρ read(t )@l.p s :: ρ t s :: ρ Pσ s :: ρ t read is similar to in, buttheaccessedtupleisleftinthetuplespace F. Tiezzi (Unicam) CoSyDesign & DCC 23 / 45

53 Klaim semantics Klaim: Operational Semantics (4) Spawning new processes: ρ(l) =s s :: ρ eval(q)@l.p s :: ρ s :: ρ P s :: ρ Q No interpretation of eval s argument is performed: free variables in Q will be translated according to the remote allocation environment dynamic binding discipline F. Tiezzi (Unicam) CoSyDesign & DCC 24 / 45

54 Dynamic Scoping Klaim semantics s 2 l s 1, l s 3 eval(out(t)@self)@l s 3 self s 3 F. Tiezzi (Unicam) CoSyDesign & DCC 25 / 45

55 Dynamic Scoping Klaim semantics s 2 l s 1, l s 3 eval(out(t)@self)@l s 3 self s 3 out(t)@self F. Tiezzi (Unicam) CoSyDesign & DCC 25 / 45

56 Dynamic Scoping Klaim semantics s 2 l s 1, l s 3 eval(out(t)@self)@l s 3 self s 3 out(t)@self t F. Tiezzi (Unicam) CoSyDesign & DCC 25 / 45

57 Static Scoping Klaim semantics s 2 l s 1, l s 3 out(out(t)@self)@l s 3 self s 3 F. Tiezzi (Unicam) CoSyDesign & DCC 26 / 45

58 Static Scoping Klaim semantics s 2 l s 1, l s 3 out(out(t)@self)@l s 3 self s 3 out(t)@s 2 F. Tiezzi (Unicam) CoSyDesign & DCC 26 / 45

59 Static Scoping Klaim semantics s 2 l s 1, l s 3 out(out(t)@self)@l t s 3 self s 3 out(t)@s 2 F. Tiezzi (Unicam) CoSyDesign & DCC 26 / 45

60 Klaim semantics Klaim: Operational Semantics (5) Creating new nodes: s :: ρ newloc(s ).P (νs )(s :: ρ P s :: ρ[s /self] ) with s codom(ρ) where the environment of the creator is used to build up the environment for the new node F. Tiezzi (Unicam) CoSyDesign & DCC 27 / 45

61 Klaim semantics Klaim: Operational Semantics (7) Rules summary: ρ(l) =s E[[ t ]] ρ = t s :: ρ out(t)@l.p s :: ρ s :: ρ P s :: ρ t ρ(l) =s s :: ρ eval(q)@l.p s :: ρ s :: ρ P s :: ρ Q ρ(l) =s match(e[[ T ]] ρ, t) =σ s :: ρ in(t )@l.p s :: ρ t s :: ρ Pσ s :: ρ ρ(l) =s match(e[[ T ]] ρ, t) =σ s :: ρ read(t )@l.p s :: ρ t s :: ρ Pσ s :: ρ t s :: ρ newloc(s ).P (νs )(s :: ρ P s :: ρ[s /self] ) with s codom(ρ) F. Tiezzi (Unicam) CoSyDesign & DCC 28 / 45

62 Klaim semantics Klaim: Operational Semantics (6) Remaining rules: N 1 N 1 N 1 N 2 N 1 N 2 N N (νs)n (νs)n N M M N N N F. Tiezzi (Unicam) CoSyDesign & DCC 29 / 45

63 An example Leader Election (assumptions) n participants distributed on the nodes of a network must elect a leader Each participant is univocally identified by an id The leader will be the participant with the smaller id The topology of the network is a ring: every node is directly connected to two other nodes (prev and next) n nodes with addresses s 0,...,s n 1 The allocation environment ρ i of node s i,inadditiontothestandard mapping self s i,mapsthelogicallocalitynext to s i+1 mod n At the outset, each process retrieves an id from the node rg that acts as a random generator The ids arealldifferent F. Tiezzi (Unicam) CoSyDesign & DCC 30 / 45

64 An example Leader Election: algorithm Once a participant has assigned an id, it spawns the mobile process checker to the next node This process travels along the ring to determine if the source node has to be the leader checker carries the id of the source node, retrieves the id of the node where it is running (stored in x) and compares the two ids If id < x, thecurrentlyhostingnodeisnottheleader: the process moves to the next node and restarts If id > x, thesourcenodeisnottheleader:theprocesscrossesthe rest of the ring to come back to the source node and insert this information in the local tuple space Otherwise, i.e. id = x, theprocessisbackonthesourcenode(thusno node with a smaller id has been found in the ring) and inserts the information that this is the leader in the local tuple space F. Tiezzi (Unicam) CoSyDesign & DCC 31 / 45

65 An example Leader Election: specification P in( ID,! id)@rg. out( ID, id)@self. eval(checker(id))@next. checker(myid) read( ID,! x)@self. if myid < x then eval(checker(myid))@next. else if myid > x then eval(notifier(myid))@next. else out( LEADER )@self. notifier(myid) read( ID,! x)@self. if x = myid then out( FOLLOWER )@self. else eval(notifier(myid))@next. F. Tiezzi (Unicam) CoSyDesign & DCC 32 / 45

66 (Mild) Extensions An example By exploiting pattern matching and parallel composition, the conditional construct can be rendered as if bcond then P else Q out( EVALUATE, bcond)@self. (in( EVALUATE, true)@self.p in( EVALUATE, false)@self.q) since only one of the two parallel processes can proceed F. Tiezzi (Unicam) CoSyDesign & DCC 33 / 45

67 An example Leader Election: specification s 0 :: [self s0,next s 1 ] P s 1 :: [self s1,next s 2 ] P s 2 :: [self s2,next s 0 ] P rg :: [self rg] ID, 7 ID, 4 ID, 5 F. Tiezzi (Unicam) CoSyDesign & DCC 34 / 45

68 The overall system s 0 next s 1 P An example rg ρ ID, 5 ID, 7 ID, 4 s 1 next s 2 s 2 next s 0 P P F. Tiezzi (Unicam) CoSyDesign & DCC 35 / 45

69 A computation s 0 next s 1 in( ID,!id)@rg.... An example rg ρ ID, 5 ID, 7 ID, 4 s 1 next s 2 s 2 next s 0 in( ID,!id)@rg.... in( ID,!id)@rg.... F. Tiezzi (Unicam) CoSyDesign & DCC 36 / 45

70 A computation s 0 next s 1 in( ID,!id)@rg.... An example rg ρ ID, 5 ID, 7 s 1 next s 2 s 2 next s 0 out( ID, 4)@self.... in( ID,!id)@rg.... F. Tiezzi (Unicam) CoSyDesign & DCC 36 / 45

71 A computation s 0 next s 1 in( ID,!id)@rg.... An example rg ρ ID, 5 ID, 7 s 1 next s 2 s 2 next s 0 ID, 4 in( ID,!id)@rg.... F. Tiezzi (Unicam) CoSyDesign & DCC 36 / 45

72 An example A computation s 0 next s 1 rg ρ ID, 7 in( ID,!id)@rg.... ID, 5 s 1 next s 2 s 2 next s 0 ID, 4 in( ID,!id)@rg.... checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 36 / 45

73 An example A computation s 0 next s 1 rg ρ ID, 7 in( ID,!id)@rg.... ID, 5 s 1 next s 2 s 2 next s 0 ID, 4 in( ID,!id)@rg.... checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 37 / 45

74 A computation s 0 next s 1 An example rg ρ in( ID,!id)@rg.... ID, 5 s 1 next s 2 s 2 next s 0 ID, 4 out( ID, 7)@self.... checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 37 / 45

75 A computation s 0 next s 1 An example rg ρ in( ID,!id)@rg.... ID, 5 s 1 next s 2 s 2 next s 0 ID, 4 eval(checker(7)) ID, checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 37 / 45

76 A computation s 0 next s 1 An example rg ρ in( ID,!id)@rg.... checker(7) ID, 5 s 1 next s 2 s 2 next s 0 ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 37 / 45

77 A computation s 0 next s 1 An example rg ρ in( ID,!id)@rg.... checker(7) ID, 5 s 1 next s 2 s 2 next s 0 ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 38 / 45

78 A computation s 0 next s 1 An example rg ρ out( ID, 5)@self.... checker(7) s 1 next s 2 s 2 next s 0 ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 38 / 45

79 A computation s 0 next s 1 An example rg ρ ID, 5 checker(7) s 1 next s 2 s 2 next s 0 ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 38 / 45

80 A computation s 0 next s 1 An example rg ρ ID, 5 checker(7) s 1 s 2 next s 2 next s 0 checker(5) ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 38 / 45

81 A computation s 0 next s 1 An example rg ρ ID, 5 checker(7) s 1 s 2 next s 2 next s 0 checker(5) ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 39 / 45

82 A computation s 0 next s 1 An example rg ρ ID, 5 checker(7) s 1 next s 2 s 2 next s 0 checker(5) ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 39 / 45

83 A computation s 0 next s 1 An example rg ρ ID, 5 checker(7) s 1 next s 2 s 2 next s 0 notifier(5) ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 39 / 45

84 A computation s 0 next s 1 An example rg ρ ID, 5 checker(7) s 1 next s 2 s 2 next s 0 notifier(5) ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 39 / 45

85 A computation s 0 next s 1 An example rg ρ notifier(5) checker(7) ID, 5 s 1 next s 2 s 2 next s 0 ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 39 / 45

86 A computation s 0 next s 1 An example rg ρ notifier(5) checker(7) ID, 5 s 1 next s 2 s 2 next s 0 ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 39 / 45

87 An example A computation s 0 next s 1 checker(7) FOLLOWER ID, 5 rg ρ s 1 next s 2 s 2 next s 0 ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 39 / 45

88 An example A computation s 0 next s 1 checker(7) FOLLOWER ID, 5 rg ρ s 1 next s 2 s 2 next s 0 ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 40 / 45

89 An example A computation s 0 next s 1 checker(7) FOLLOWER ID, 5 rg ρ s 1 next s 2 s 2 next s 0 ID, 4 ID, 7 checker(4) F. Tiezzi (Unicam) CoSyDesign & DCC 40 / 45

90 An example A computation s 0 next s 1 checker(4) checker(7) FOLLOWER ID, 5 rg ρ s 1 next s 2 s 2 next s 0 ID, 4 ID, 7 F. Tiezzi (Unicam) CoSyDesign & DCC 40 / 45

91 An example A computation s 0 next s 1 checker(4) checker(7) FOLLOWER ID, 5 rg ρ s 1 next s 2 s 2 next s 0 ID, 4 ID, 7 F. Tiezzi (Unicam) CoSyDesign & DCC 40 / 45

92 An example s 1 next s 2 s 2 next s 0 A computation s 0 next s 1 checker(7) FOLLOWER ID, 5 rg ρ checker(4) ID, 4 ID, 7 F. Tiezzi (Unicam) CoSyDesign & DCC 40 / 45

93 An example s 1 next s 2 s 2 next s 0 A computation s 0 next s 1 checker(7) FOLLOWER ID, 5 rg ρ checker(4) ID, 4 ID, 7 F. Tiezzi (Unicam) CoSyDesign & DCC 40 / 45

94 A computation s 0 next s 1 An example FOLLOWER ID, 5 rg ρ checker(7) s 1 next s 2 s 2 next s 0 LEADER ID, 4 ID, 7 F. Tiezzi (Unicam) CoSyDesign & DCC 40 / 45

95 A computation s 0 next s 1 An example FOLLOWER ID, 5 rg ρ checker(7) s 1 next s 2 s 2 next s 0 LEADER ID, 4 ID, 7 F. Tiezzi (Unicam) CoSyDesign & DCC 41 / 45

96 A computation s 0 next s 1 An example FOLLOWER ID, 5 rg ρ checker(7) s 1 next s 2 s 2 next s 0 LEADER ID, 4 ID, 7 F. Tiezzi (Unicam) CoSyDesign & DCC 41 / 45

97 A computation s 0 next s 1 An example FOLLOWER ID, 5 rg ρ notifier(7) s 1 next s 2 s 2 next s 0 LEADER ID, 4 ID, 7 F. Tiezzi (Unicam) CoSyDesign & DCC 41 / 45

98 A computation s 0 next s 1 An example FOLLOWER ID, 5 rg ρ notifier(7) s 1 next s 2 s 2 next s 0 LEADER ID, 4 ID, 7 F. Tiezzi (Unicam) CoSyDesign & DCC 41 / 45

99 A computation s 0 next s 1 An example FOLLOWER ID, 5 rg ρ s 1 next s 2 s 2 next s 0 LEADER ID, 4 ID, 7 notifier(7) F. Tiezzi (Unicam) CoSyDesign & DCC 41 / 45

100 A computation s 0 next s 1 An example FOLLOWER ID, 5 rg ρ s 1 next s 2 s 2 next s 0 LEADER ID, 4 ID, 7 notifier(7) F. Tiezzi (Unicam) CoSyDesign & DCC 41 / 45

101 A computation s 0 next s 1 An example FOLLOWER ID, 5 rg ρ s 1 next s 2 s 2 next s 0 LEADER FOLLOWER ID, 4 ID, 7 F. Tiezzi (Unicam) CoSyDesign & DCC 41 / 45

102 A computation s 0 next s 1 An example FOLLOWER ID, 5 rg ρ s 1 next s 2 s 2 next s 0 LEADER FOLLOWER ID, 4 ID, 7 F. Tiezzi (Unicam) CoSyDesign & DCC 42 / 45

103 Klaim implementation Implementation X-Klaim (extended Klaim) A fully-fledged programming language including the Klaim operations and a high-level syntax: Variable declarations Assignments Conditionals, iteration,... Time-outs Klava (Klaim in Java) AJavapackageimplementing Klaim operations and concepts Communications among processes and nodes Code mobility F. Tiezzi (Unicam) CoSyDesign & DCC 43 / 45

104 Klaim implementation Klaim Programming Framework X-Klaim program xklaim compiler klava package Java program Java compiler Java virtual machine F. Tiezzi (Unicam) CoSyDesign & DCC 44 / 45

105 Klaim implementation KLAIM website: F. Tiezzi (Unicam) CoSyDesign & DCC 45 / 45

Orchestrating Tuple-based Languages

Orchestrating Tuple-based Languages Orchestrating Tuple-based Languages Rocco De Nicola 1, Andrea Margheri 1, and Francesco Tiezzi 2 1 Univeristà degli Studi di Firenze, Dipartimento di Sistemi e Informatica Viale Morgagni, 65 50134 Firenze,

More information

Coordination Languages

Coordination Languages c.hankin@imperial.ac.uk Department of Computing, BCS Advanced Programming Group Lecture, December 2008 Outline 1 Introduction 2 Linda 3 JavaSpaces 4 KLAIM 5 AspectK 6 Example Programs 7 Conclusions Outline

More information

The Klaim Project: Theory and Practice

The Klaim Project: Theory and Practice The Klaim Project: Theory and Practice Lorenzo Bettini 1, Viviana Bono 2, Rocco De Nicola 1, Gianluigi Ferrari 3, Daniele Gorla 1, Michele Loreti 1, Eugenio Moggi 4, Rosario Pugliese 1, Emilio Tuosto 3,

More information

Course on Probabilistic Methods in Concurrency. (Concurrent Languages for Probabilistic Asynchronous Communication) Lecture 1

Course on Probabilistic Methods in Concurrency. (Concurrent Languages for Probabilistic Asynchronous Communication) Lecture 1 Course on Probabilistic Methods in Concurrency (Concurrent Languages for Probabilistic Asynchronous Communication) Lecture 1 The pi-calculus and the asynchronous pi-calculus. Catuscia Palamidessi INRIA

More information

The Klaim Project: Theory and Practice

The Klaim Project: Theory and Practice The Klaim Project: Theory and Practice Lorenzo Bettini 1, Viviana Bono 2, Rocco De Nicola 1, Gianluigi Ferrari 3, Daniele Gorla 1, Michele Loreti 1, Eugenio Moggi 4, Rosario Pugliese 1, Emilio Tuosto 3,

More information

Types for access control

Types for access control Theoretical Computer Science 240 (2000) 215 254 www.elsevier.com/locate/tcs Types for access control Rocco De Nicola a;, GianLuigi Ferrari b, Rosario Pugliese a, Betti Venneri a a Dipartimento di Sistemi

More information

O Klaim: a coordination language with mobile mixins

O Klaim: a coordination language with mobile mixins O Klaim: a coordination language with mobile mixins Lorenzo Bettini 1 Viviana Bono 2 Betti Venneri 1 1 Dipartimento di Sistemi e Informatica, Università di Firenze, {bettini,venneri}@dsi.unifi.it 2 Dipartimento

More information

Operational Semantics. One-Slide Summary. Lecture Outline

Operational Semantics. One-Slide Summary. Lecture Outline Operational Semantics #1 One-Slide Summary Operational semantics are a precise way of specifying how to evaluate a program. A formal semantics tells you what each expression means. Meaning depends on context:

More information

Simulation and Analysis of Distributed Systems in Klaim

Simulation and Analysis of Distributed Systems in Klaim Simulation and Analysis of Distributed Systems in Klaim Francesco Calzolai, Michele Loreti To cite this version: Francesco Calzolai, Michele Loreti. Simulation and Analysis of Distributed Systems in Klaim.

More information

A Formal Definition of RESTful Semantic Web Services. Antonio Garrote Hernández María N. Moreno García

A Formal Definition of RESTful Semantic Web Services. Antonio Garrote Hernández María N. Moreno García A Formal Definition of RESTful Semantic Web Services Antonio Garrote Hernández María N. Moreno García Outline Motivation Resources and Triple Spaces Resources and Processes RESTful Semantic Resources Example

More information

Functional Programming. Big Picture. Design of Programming Languages

Functional Programming. Big Picture. Design of Programming Languages Functional Programming Big Picture What we ve learned so far: Imperative Programming Languages Variables, binding, scoping, reference environment, etc What s next: Functional Programming Languages Semantics

More information

CS 565: Programming Languages. Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106

CS 565: Programming Languages. Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106 CS 565: Programming Languages Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106 Administrivia Who am I? Course web page http://www.cs.purdue.edu/homes/peugster/cs565spring08/ Office hours By appointment Main

More information

CSCI-GA Scripting Languages

CSCI-GA Scripting Languages CSCI-GA.3033.003 Scripting Languages 12/02/2013 OCaml 1 Acknowledgement The material on these slides is based on notes provided by Dexter Kozen. 2 About OCaml A functional programming language All computation

More information

Meta-programming with Names and Necessity p.1

Meta-programming with Names and Necessity p.1 Meta-programming with Names and Necessity Aleksandar Nanevski Carnegie Mellon University ICFP, Pittsburgh, 05 October 2002 Meta-programming with Names and Necessity p.1 Meta-programming Manipulation of

More information

Compilers. Cool Semantics II. Alex Aiken

Compilers. Cool Semantics II. Alex Aiken Compilers Informal semantics of new T Allocate locations to hold all attributes of an object of class T Essentially, allocate a new object Set attributes with their default values Evaluate the initializers

More information

Simulation and Analysis of Distributed Systems in Klaim

Simulation and Analysis of Distributed Systems in Klaim Simulation and Analysis of Distributed Systems in Klaim Francesco Calzolai and Michele Loreti Dipartimento di Sistemi e Informatica Università di Firenze Abstract. Network and distributed systems typically

More information

Foundational Calculi for Network Aware Programming

Foundational Calculi for Network Aware Programming Foundational Calculi for Network Aware Programming An Assessment from a Programming Perspective GIANLUIGI FERRARI Dipartimento di Informatica, Università di Pisa ROSARIO PUGLIESE Dipartimento di Sistemi

More information

Lambda Calculus and Lambda notation in Lisp II. Based on Prof. Gotshalks notes on Lambda Calculus and Chapter 9 in Wilensky.

Lambda Calculus and Lambda notation in Lisp II. Based on Prof. Gotshalks notes on Lambda Calculus and Chapter 9 in Wilensky. λ Calculus Basis Lambda Calculus and Lambda notation in Lisp II Based on Prof. Gotshalks notes on Lambda Calculus and Chapter 9 in Wilensky Mathematical theory for anonymous functions» functions that have

More information

Chapter 5: Procedural abstraction. Function procedures. Function procedures. Proper procedures and function procedures

Chapter 5: Procedural abstraction. Function procedures. Function procedures. Proper procedures and function procedures Chapter 5: Procedural abstraction Proper procedures and function procedures Abstraction in programming enables distinction: What a program unit does How a program unit works This enables separation of

More information

Mobile Distributed Programming in X-Klaim

Mobile Distributed Programming in X-Klaim Mobile Distributed Programming in X-Klaim Rocco De Nicola Dipartimento di Sistemi ed Informatica Università di Firenze Bertinoro International Spring School for Graduate Studies in Computer Science 6-17

More information

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Lecture 13. Notation. The rules. Evaluation Rules So Far

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Lecture 13. Notation. The rules. Evaluation Rules So Far Lecture Outline Operational Semantics of Cool Lecture 13 COOL operational semantics Motivation Notation The rules Prof. Aiken CS 143 Lecture 13 1 Prof. Aiken CS 143 Lecture 13 2 Motivation We must specify

More information

Mobile Distributed Programming in X-Klaim

Mobile Distributed Programming in X-Klaim Dipartimento di Sistemi e Informatica, Università di Firenze {bettini,denicola}@dsi.unifi.it SMF-Moby Bertinoro, 27 April 2005 Outline of the Lectures 1. An introduction to Klaim - R. De Nicola Global

More information

Reliable Self-Deployment of Cloud Applications

Reliable Self-Deployment of Cloud Applications Reliable Self-Deployment of Cloud Applications Xavier Etchevers 1, Gwen Salaün 2, Fabienne Boyer 3, Thierry Coupaye 1, Noel De Palma 3 1 Orange Labs, France 2 Grenoble INP, Inria, France 3 UJF-Grenoble

More information

Resource Access and Mobility Control with Dynamic Privileges Acquisition

Resource Access and Mobility Control with Dynamic Privileges Acquisition Resource Access and Mobility Control with Dynamic Privileges Acquisition Daniele Gorla Rosario Pugliese Dipartimento di Sistemi e Informatica, Università di Firenze e-mail: {gorla,pugliese}@dsi.unifi.it

More information

Programming language design and analysis

Programming language design and analysis Programming language design and analysis Introduction Marius Minea 25 September 2017 Why this course? Programming languages are fundamental and one of the oldest CS fields Language design is an important

More information

Lambda Calculus. Gunnar Gotshalks LC-1

Lambda Calculus. Gunnar Gotshalks LC-1 Lambda Calculus LC-1 l- Calculus History Developed by Alonzo Church during 1930 s-40 s One fundamental goal was to describe what can be computed. Full definition of l-calculus is equivalent in power to

More information

Network-aware Evaluations of Reputation Systems

Network-aware Evaluations of Reputation Systems Network-aware Evaluations of Reputation Systems Alessandro Celestini 1, Rocco De Nicola 1, and Francesco Tiezzi 1 IMT, Institute for Advanced Studies Lucca, Italy {alessandro.celestini,rocco.denicola,francesco.tiezzi}@imtlucca.it

More information

Substitution in Structural Operational Semantics and value-passing process calculi

Substitution in Structural Operational Semantics and value-passing process calculi Substitution in Structural Operational Semantics and value-passing process calculi Sam Staton Computer Laboratory University of Cambridge Abstract Consider a process calculus that allows agents to communicate

More information

Variables and Bindings

Variables and Bindings Net: Variables Variables and Bindings Q: How to use variables in ML? Q: How to assign to a variable? # let = 2+2;; val : int = 4 let = e;; Bind the value of epression e to the variable Variables and Bindings

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

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

Modal Logic: Implications for Design of a Language for Distributed Computation p.1/53

Modal Logic: Implications for Design of a Language for Distributed Computation p.1/53 Modal Logic: Implications for Design of a Language for Distributed Computation Jonathan Moody (with Frank Pfenning) Department of Computer Science Carnegie Mellon University Modal Logic: Implications for

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

IG-JADE-PKSlib. An Agent Based Framework for Advanced Web Service Composition and Provisioning. Erick Martínez & Yves Lespérance

IG-JADE-PKSlib. An Agent Based Framework for Advanced Web Service Composition and Provisioning. Erick Martínez & Yves Lespérance IG-JADE-PKSlib An Agent Based Framework for Advanced Web Service Composition and Provisioning Erick Martínez & Yves Lespérance Department of Computer Science York University Toronto, Canada 1 Motivation

More information

Closures. Mooly Sagiv. Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming

Closures. Mooly Sagiv. Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming Closures Mooly Sagiv Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming t ::= x x. t t t Call-by-value big-step Operational Semantics terms variable v ::= values abstraction x.

More information

Lambda Calculus LC-1

Lambda Calculus LC-1 Lambda Calculus LC-1 λ- Calculus History-1 Developed by Alonzo Church during 1930 s-40 s One fundamental goal was to describe what can be computed. Full definition of λ-calculus is equivalent in power

More information

CS 242. Fundamentals. Reading: See last slide

CS 242. Fundamentals. Reading: See last slide CS 242 Fundamentals Reading: See last slide Syntax and Semantics of Programs Syntax The symbols used to write a program Semantics The actions that occur when a program is executed Programming language

More information

Functional Languages. CSE 307 Principles of Programming Languages Stony Brook University

Functional Languages. CSE 307 Principles of Programming Languages Stony Brook University Functional Languages CSE 307 Principles of Programming Languages Stony Brook University http://www.cs.stonybrook.edu/~cse307 1 Historical Origins 2 The imperative and functional models grew out of work

More information

Architectural Styles - Finale

Architectural Styles - Finale Material and some slide content from: - Emerson Murphy-Hill - Software Architecture: Foundations, Theory, and Practice - Essential Software Architecture Architectural Styles - Finale Reid Holmes Lecture

More information

CSC312 Principles of Programming Languages : Functional Programming Language. Copyright 2006 The McGraw-Hill Companies, Inc.

CSC312 Principles of Programming Languages : Functional Programming Language. Copyright 2006 The McGraw-Hill Companies, Inc. CSC312 Principles of Programming Languages : Functional Programming Language Overview of Functional Languages They emerged in the 1960 s with Lisp Functional programming mirrors mathematical functions:

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

Motivation: Model-driven. driven Engineering. Semantics of Model Transformation. Reiko Heckel University of Leicester, UK

Motivation: Model-driven. driven Engineering. Semantics of Model Transformation. Reiko Heckel University of Leicester, UK Semantics of Model Transformation Reiko Heckel University of Leicester, UK, University of Birmingham, 1 March 2007 Motivation: Model-driven driven Engineering Focus and primary artifacts are models instead

More information

Typed Lambda Calculus. Chapter 9 Benjamin Pierce Types and Programming Languages

Typed Lambda Calculus. Chapter 9 Benjamin Pierce Types and Programming Languages Typed Lambda Calculus Chapter 9 Benjamin Pierce Types and Programming Languages t ::= x x. t t t Call-by-value small step perational Semantics terms variable v ::= values abstraction x. t abstraction values

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

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Fall 2016 Lecture 3a Andrew Tolmach Portland State University 1994-2016 Formal Semantics Goal: rigorous and unambiguous definition in terms of a wellunderstood formalism (e.g.

More information

Written Presentation: JoCaml, a Language for Concurrent Distributed and Mobile Programming

Written Presentation: JoCaml, a Language for Concurrent Distributed and Mobile Programming Written Presentation: JoCaml, a Language for Concurrent Distributed and Mobile Programming Nicolas Bettenburg 1 Universitaet des Saarlandes, D-66041 Saarbruecken, nicbet@studcs.uni-sb.de Abstract. As traditional

More information

Programming with Types

Programming with Types Programming with Types Run-time type analysis and the foundations of program reflection Stephanie Weirich Cornell University Reflection A style of programming that supports the run-time discovery of program

More information

Towards Semantic Interoperability between C2 Systems Following the Principles of Distributed Simulation

Towards Semantic Interoperability between C2 Systems Following the Principles of Distributed Simulation Towards Semantic Interoperability between C2 Systems Following the Principles of Distributed Simulation Authors: Vahid Mojtahed (FOI), vahid.mojtahed@foi.se Martin Eklöf (FOI), martin.eklof@foi.se Jelena

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

Heap, Variables, References, and Garbage. CS152. Chris Pollett. Oct. 13, 2008.

Heap, Variables, References, and Garbage. CS152. Chris Pollett. Oct. 13, 2008. Heap, Variables, References, and Garbage. CS152. Chris Pollett. Oct. 13, 2008. Outline. Dynamic Allocation. Variables and Constants. Aliases and Problems. Garbage. Introduction. On Wednesday, we were talking

More information

Object Oriented Issues in VDM++

Object Oriented Issues in VDM++ Object Oriented Issues in VDM++ Nick Battle, Fujitsu UK (nick.battle@uk.fujitsu.com) Background VDMJ implemented VDM-SL first (started late 2007) Formally defined. Very few semantic problems VDM++ support

More information

Specification, Verification, and Interactive Proof

Specification, Verification, and Interactive Proof Specification, Verification, and Interactive Proof SRI International May 23, 2016 PVS PVS - Prototype Verification System PVS is a verification system combining language expressiveness with automated tools.

More information

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Notation. The rules. Evaluation Rules So Far.

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Notation. The rules. Evaluation Rules So Far. Lecture Outline Operational Semantics of Cool COOL operational semantics Motivation Adapted from Lectures by Profs. Alex Aiken and George Necula (UCB) Notation The rules CS781(Prasad) L24CG 1 CS781(Prasad)

More information

Organization of Programming Languages CS3200/5200N. Lecture 11

Organization of Programming Languages CS3200/5200N. Lecture 11 Organization of Programming Languages CS3200/5200N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Functional vs. Imperative The design of the imperative languages

More information

Foundations. Yu Zhang. Acknowledgement: modified from Stanford CS242

Foundations. Yu Zhang. Acknowledgement: modified from Stanford CS242 Spring 2013 Foundations Yu Zhang Acknowledgement: modified from Stanford CS242 https://courseware.stanford.edu/pg/courses/317431/ Course web site: http://staff.ustc.edu.cn/~yuzhang/fpl Reading Concepts

More information

COP4020 Programming Languages. Functional Programming Prof. Robert van Engelen

COP4020 Programming Languages. Functional Programming Prof. Robert van Engelen COP4020 Programming Languages Functional Programming Prof. Robert van Engelen Overview What is functional programming? Historical origins of functional programming Functional programming today Concepts

More information

Mobile Applications in X-KLAIM

Mobile Applications in X-KLAIM Mobile Applications in X-KLAIM Lorenzo Bettini 1 Rocco De Nicola 1 GianLuigi Ferrari 2 Rosario Pugliese 1 1 Dipartimento di Sistemi e Informatica, Università di Firenze e-mail: fbettini,denicola,puglieseg@dsi.unifi.it

More information

Verifying control systems using CSP, FDR, and Handel-C.

Verifying control systems using CSP, FDR, and Handel-C. erifying control systems using CSP, FDR, and Handel-C. 01 Verifying control systems using CSP, FDR, and Handel-C. Alistair A. McEwan University of Surrey erifying control systems using CSP, FDR, and Handel-C.

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

UNIT 3

UNIT 3 UNIT 3 Presentation Outline Sequence control with expressions Conditional Statements, Loops Exception Handling Subprogram definition and activation Simple and Recursive Subprogram Subprogram Environment

More information

Variables. Substitution

Variables. Substitution Variables Elements of Programming Languages Lecture 4: Variables, binding and substitution James Cheney University of Edinburgh October 6, 2015 A variable is a symbol that can stand for another expression.

More information

Lexical Considerations

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

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

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications Distributed Objects and Remote Invocation Programming Models for Distributed Applications Extending Conventional Techniques The remote procedure call model is an extension of the conventional procedure

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 4 Thomas Wies New York University Review Last week Control Structures Selection Loops Adding Invariants Outline Subprograms Calling Sequences Parameter

More information

Functional Programming. Pure Functional Programming

Functional Programming. Pure Functional Programming Functional Programming Pure Functional Programming Computation is largely performed by applying functions to values. The value of an expression depends only on the values of its sub-expressions (if any).

More information

Operational Semantics of Cool

Operational Semantics of Cool Operational Semantics of Cool Key Concepts semantics: the meaning of a program, what does program do? how the code is executed? operational semantics: high level code generation steps of calculating values

More information

Formally Linking Security Protocol Models and Implementations

Formally Linking Security Protocol Models and Implementations Formally Linking Security Protocol Models and Implementations Alfredo Pironti Microsoft Research INRIA http://alfredo.pironti.eu/research/ Politecnico di Torino Formal Methods for Security Protocol Engineering

More information

Outline. 1 Function calls and parameter passing. 2 Pointers, arrays, and references. 5 Declarations, scope, and lifetimes 6 I/O

Outline. 1 Function calls and parameter passing. 2 Pointers, arrays, and references. 5 Declarations, scope, and lifetimes 6 I/O Outline EDAF30 Programming in C++ 2. Introduction. More on function calls and types. Sven Gestegård Robertz Computer Science, LTH 2018 1 Function calls and parameter passing 2 Pointers, arrays, and references

More information

CS 314 Principles of Programming Languages

CS 314 Principles of Programming Languages CS 314 Principles of Programming Languages Lecture 15: Review and Functional Programming Zheng (Eddy) Zhang Rutgers University March 19, 2018 Class Information Midterm exam forum open in Sakai. HW4 and

More information

Rule Formats for Nominal Modal Transition Systems

Rule Formats for Nominal Modal Transition Systems Rule Formats for Nominal Modal Transition Systems Anke Stüber Universitet Uppsala, Uppsala, Sweden anke.stuber@it.uu.se Abstract. Modal transition systems are specification languages that allow the expression

More information

11/6/17. Outline. FP Foundations, Scheme. Imperative Languages. Functional Programming. Mathematical Foundations. Mathematical Foundations

11/6/17. Outline. FP Foundations, Scheme. Imperative Languages. Functional Programming. Mathematical Foundations. Mathematical Foundations Outline FP Foundations, Scheme In Text: Chapter 15 Mathematical foundations Functional programming λ-calculus LISP Scheme 2 Imperative Languages We have been discussing imperative languages C/C++, Java,

More information

Lexical Considerations

Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a

More information

Model driven Engineering & Model driven Architecture

Model driven Engineering & Model driven Architecture Model driven Engineering & Model driven Architecture Prof. Dr. Mark van den Brand Software Engineering and Technology Faculteit Wiskunde en Informatica Technische Universiteit Eindhoven Model driven software

More information

Programming Safe Agents in Blueprint. Alex Muscar University of Craiova

Programming Safe Agents in Blueprint. Alex Muscar University of Craiova Programming Safe Agents in Blueprint Alex Muscar University of Craiova Programmers are craftsmen, and, as such, they are only as productive as theirs tools allow them to be Introduction Agent Oriented

More information

Informatica 3 Syntax and Semantics

Informatica 3 Syntax and Semantics Informatica 3 Syntax and Semantics Marcello Restelli 9/15/07 Laurea in Ingegneria Informatica Politecnico di Milano Introduction Introduction to the concepts of syntax and semantics Binding Variables Routines

More information

COMP 181. Agenda. Midterm topics. Today: type checking. Purpose of types. Type errors. Type checking

COMP 181. Agenda. Midterm topics. Today: type checking. Purpose of types. Type errors. Type checking Agenda COMP 181 Type checking October 21, 2009 Next week OOPSLA: Object-oriented Programming Systems Languages and Applications One of the top PL conferences Monday (Oct 26 th ) In-class midterm Review

More information

Lecture 6: The Declarative Kernel Language Machine. September 13th, 2011

Lecture 6: The Declarative Kernel Language Machine. September 13th, 2011 Lecture 6: The Declarative Kernel Language Machine September 13th, 2011 Lecture Outline Computations contd Execution of Non-Freezable Statements on the Abstract Machine The skip Statement The Sequential

More information

Distributed Information System as a System of Asynchronous Concurrent Processes

Distributed Information System as a System of Asynchronous Concurrent Processes Distributed Information System as a System of Asynchronous Concurrent Processes Marek Rychlý Jaroslav Zendulka Department of Information Systems Faculty of Information Technology Brno University of Technology

More information

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 2. true / false ML can be compiled. 3. true / false FORTRAN can reasonably be considered

More information

5. Introduction to the Lambda Calculus. Oscar Nierstrasz

5. Introduction to the Lambda Calculus. Oscar Nierstrasz 5. Introduction to the Lambda Calculus Oscar Nierstrasz Roadmap > What is Computability? Church s Thesis > Lambda Calculus operational semantics > The Church-Rosser Property > Modelling basic programming

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

Behavioural Equivalences and Abstraction Techniques. Natalia Sidorova

Behavioural Equivalences and Abstraction Techniques. Natalia Sidorova Behavioural Equivalences and Abstraction Techniques Natalia Sidorova Part 1: Behavioural Equivalences p. p. The elevator example once more How to compare this elevator model with some other? The cabin

More information

IMT School for Advanced Studies, Lucca. Lucca, Italy. Programming Abstractions for Data Sharing in Distributed Spaces

IMT School for Advanced Studies, Lucca. Lucca, Italy. Programming Abstractions for Data Sharing in Distributed Spaces IMT School for Advanced Studies, Lucca Lucca, Italy Programming Abstractions for Data Sharing in Distributed Spaces PhD Program in Computer Science and Engineering XXVIII Cycle By Marina Andrić 2017 The

More information

Multi-Agent Dialogue Protocols

Multi-Agent Dialogue Protocols Multi-Agent Dialogue Protocols Christopher D. Walton (cdw@inf.ed.ac.uk) Centre for Intelligent Systems and their Applications (CISA), Edinburgh, UK November 28, 2003 Abstract In this paper we propose a

More information

40 Behaviour Compatibility

40 Behaviour Compatibility 40 Behaviour Compatibility [2] R. De Nicola, Extentional Equivalences for Transition Systems, Acta Informatica, vol. 24, pp. 21-237, 1987. [3] J. Gray, Notes on Data Base Operating Systems, in Operating

More information

Recap: Functions as first-class values

Recap: Functions as first-class values Recap: Functions as first-class values Arguments, return values, bindings What are the benefits? Parameterized, similar functions (e.g. Testers) Creating, (Returning) Functions Iterator, Accumul, Reuse

More information

Model Checking of Location and Mobility Related Security Policy Specifications in Ambient Calculus

Model Checking of Location and Mobility Related Security Policy Specifications in Ambient Calculus Model Checking of Location and Mobility Related Security Policy Specifications in Ambient Calculus Devrim Ünal (presenter) devrimu@uekae.tubitak.gov.tr National Institute of Electronics and Cryptology,

More information

Architecture as coordination: the Orc perspective

Architecture as coordination: the Orc perspective Architecture as coordination: the Orc perspective L.S. Barbosa Dept. Informática, Universidade do Minho Braga, Portugal DI-CCTC, UM, 2009 Introduction Basic calculus Functional core Orc(hestration) examples

More information

Motivation was to facilitate development of systems software, especially OS development.

Motivation was to facilitate development of systems software, especially OS development. A History Lesson C Basics 1 Development of language by Dennis Ritchie at Bell Labs culminated in the C language in 1972. Motivation was to facilitate development of systems software, especially OS development.

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

Multi-paradigm Declarative Languages

Multi-paradigm Declarative Languages Michael Hanus (CAU Kiel) Multi-paradigm Declarative Languages ICLP 2007 1 Multi-paradigm Declarative Languages Michael Hanus Christian-Albrechts-University of Kiel Programming Languages and Compiler Construction

More information

Programmiersprachen (Programming Languages)

Programmiersprachen (Programming Languages) 2016-05-13 Preface Programmiersprachen (Programming Languages) coordinates: lecturer: web: usable for: requirements: No. 185.208, VU, 3 ECTS Franz Puntigam http://www.complang.tuwien.ac.at/franz/ps.html

More information

Lecture08: Scope and Lexical Address

Lecture08: Scope and Lexical Address Lecture08: Scope and Lexical Address Free and Bound Variables (EOPL 1.3.1) Given an expression E, does a particular variable reference x appear free or bound in that expression? Definition: A variable

More information

a data type is Types

a data type is Types Pointers Class 2 a data type is Types Types a data type is a set of values a set of operations defined on those values in C++ (and most languages) there are two flavors of types primitive or fundamental

More information

The Abstract Behavioral Specification Language

The Abstract Behavioral Specification Language The Abstract Behavioral Specification Language Frank S. de Boer CWI frb@cwi.nl Scientific Meeting CWI, November 29, 2013 How It All Started? Simula (Ole Johan Dahl, Turing award 2001) Credo FP6 project

More information

CLAN: A Tool for Contract Analysis and Conflict Discovery

CLAN: A Tool for Contract Analysis and Conflict Discovery CLAN: A Tool for Contract Analysis and Conflict Discovery Stephen Fenech 1, Gordon J. Pace 1, and Gerardo Schneider 2 1 Dept. of Computer Science, University of Malta, Malta 2 Dept. of Informatics, University

More information

Specifying Web Workflow Services for Finding Partners in the Context of Loose Inter-Organizational Workflow

Specifying Web Workflow Services for Finding Partners in the Context of Loose Inter-Organizational Workflow Specifying Web Workflow Services for Finding Partners in the Context of Loose Inter-Organizational Workflow Eric Andonoff, Lotfi Bouzguenda (Phd), Chihab Hanachi IRIT Laboratory, Toulouse, France 1 Outline

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

A Type System for Object Initialization In the Java TM Bytecode Language

A Type System for Object Initialization In the Java TM Bytecode Language Electronic Notes in Theoretical Computer Science 10 (1998) URL: http://www.elsevier.nl/locate/entcs/volume10.html 7 pages A Type System for Object Initialization In the Java TM Bytecode Language Stephen

More information