Coloured Petri Nets

58
Kurt Jensen Lars M. Kristensen 1 Coloured Petri Nets Department of Computer Science Coloured Petri Nets Kurt Jensen & Lars Michael Kristensen (Edited by José Luís Silva, DI/CCTC, Universidade do Minho) Concurrent system Model

description

Concurrent system. Model. Coloured Petri Nets. Kurt Jensen & Lars Michael Kristensen (Edited by José Luís Silva, DI/CCTC, Universidade do Minho). Coloured Petri Nets. Petri Nets: graphical notation concurrency communication synchronisation CPN ML (Standard ML): - PowerPoint PPT Presentation

Transcript of Coloured Petri Nets

Page 1: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

1

Coloured Petri NetsDepartment of Computer Science

Coloured Petri NetsKurt Jensen & Lars Michael Kristensen(Edited by José Luís Silva, DI/CCTC, Universidade do Minho)

Concurrent system Model

Page 2: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

2

Coloured Petri NetsDepartment of Computer Science

Coloured Petri Nets Graphical modelling language for

concurrent systems. Combination of Petri Nets and

programming language.

Petri Nets: graphical notation concurrency communication synchronisationCPN ML (Standard ML):

data manipulationcompact modellingparameterisable models

www.cs.au.dk/CPnets/cpnbook/

Page 3: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

3

Coloured Petri NetsDepartment of Computer Science

CPN Tools userinterface

Page 4: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

4

Coloured Petri NetsDepartment of Computer Science

data

n if successthen 1`nelse empty

n

if n=kthen k+1else k

(n,d)(n,d)

nif n=k then data^delse data

(n,d)

if successthen 1`(n,d)else empty

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

SendPacket

1`1

NO

CD

NO

A

NOxDATA

NextSend1`1

NO

DataReceived

1`""

DATA

B

NOxDATA

PacketsTo Send

AllPackets

NOxDATA

k n

NextReck

if n=kthen k+1else k

NO

1 1`1

11`""6

1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

11`1

Non-hierarchical Coloured Petri Nets

Page 5: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

5

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

Simple protocol

Page 6: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

6

Coloured Petri NetsDepartment of Computer Science

Informal description

Sender Network Receiver

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

No loss of packetsNo overtaking

Page 7: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

7

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

Coloured Petri NetPlace

Transition

Arc

Net inscriptions

Nodes

Page 8: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

8

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

Places represent the state of the system

Name(no formal meaning;

large impact on readability)

Initial marking (multiset of

tokens)

Colour set (type)

Definition of colour sets:colset NO = int; (* integers *)colset DATA = string; (* text strings *)colset NOxDATA = product NO * DATA;

Each token in the initial marking must have a colour that belongs to the colour set

Each place contains a number of tokens. Each token carries a colour (data value). The colour set specifies the set of allowed

token colours.

Page 9: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

9

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`1

6

1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Current marking during simulation

Information aboutcurrent marking(changes during simulation)

The thick border line indicates that thetransition is enabled (ready to occur)

Circle: 6 tokens

Square: Detailedtoken values

One token with value 1

Values:Token colours

(multiset of actual token colours)

Type:Colour set

(set of allowed token colours)

Page 10: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

10

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

Transitions and arcsArc expression

Name(no formal meaning)

The arc expression must evaluate to a colour in the colour set of the attached place(or a multiset of such colours)

Declaration of variables:var n : NO; (* integers *)var d : DATA; (* strings *)

Binding of variables:<n=3,d="CPN">

Evaluation of expressions:

(n,d) (3,"CPN") : NOxDATA

n 3 : NO

Page 11: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

11

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`1

6

1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Enabling of transitionTwo variables: var n : NO; (* integers *) var d : DATA; (* strings *)

Binding: < n=? , d=? >

Transition is enabled if we can find a binding so that each input arc expression evaluates to one or more colours that are present on the corresponding input place

NO DATA

?

?

Page 12: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

12

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`1

6

1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Enabling of SendPacket

One token with value 1

Binding: < n=1 , d=? >

We want to find a binding for the variable n such that the arc expression n evaluates to a colour which is present on the place NextSend

Arc expression

Page 13: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

13

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`1

6

1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Binding: < n=1 , d=? >

Enabling of SendPacket

Six different tokens

Binding: < n=1 , d="COL" >

We want to find a binding for the variable d such that the arc expression (n,d) evaluates to a colour which is present on the place PacketsToSend

Arc expression

Page 14: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

14

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`1

6

1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

1

(1,"COL")

Enabling of SendPacket

Binding: < n=1 , d="COL" >

We have found a binding so that each input arc expression evaluates to a colour that is present on the corresponding input place

Transition is enabled(ready to occur)

Page 15: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

15

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`1

6

1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Occurrence of SendPacketin binding <n=1,d=“COL”>

(1,"COL")

Remove: (1,"COL")

Add a new token: (1,"COL")

Remove: 1

1

(1,"COL")

Page 16: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

16

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

11`(1,"COL ")

5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

New marking after occurrence of SendPacket in binding <n=1,d=“COL”>

The first packet has been removed

A copy of the first packet has been put on A

No token on this place

Transition is no longer enabled(thin border line)

Page 17: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

17

Exercise Simulate the previous example in the CPN Tools:

Press Right button -> New Net Press Right button on Standard declarations -> New Decl

colset NO = int; colset Data = string; colset NOxData = product NO * Data; var n:NO; var d:Data;

ToolBox -> drag drop Create -> select and apply

Place -> press “tab” button to access PLACE TYPE and INIT MARK Transitions Arcs (select origin and then target)

Simulation -> select and apply Execute a transition with a chosen binding

Coloured Petri NetsDepartment of Computer Science

Page 18: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

18

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

11`(1,"COL ")

5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

New marking M1

Transition enabled

Page 19: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

19

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

11`(1,"COL ")

5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Binding: < n=? , d=? >

Binding of TransmitPacketCurrent marking

Arc expression

Binding: < n=1 , d="COL" >

Page 20: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

20

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

11`(1,"COL ")

5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Occurrence of TransmitPacket in binding <n=1,d=“COL”>

Remove: (1,"COL")

(1, "COL") (1, "COL")

Add a new token: (1,"COL")

Page 21: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

21

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

11`(1,"COL ")

5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

New marking M2

Binding: <n=1,d="COL">

11`2

XXXX

11`(1,"COL")

Page 22: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

22

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

11`2

11`(1,"COL ")5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Binding: <n=2>1

1`2 XXX

New marking M3

Page 23: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

23

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

11`2

11`(1,"COL ")5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Binding: <n=2>

1 1`2

XXX

New marking M4

Page 24: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

24

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`2

11`(1,"COL ")5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

We have successfully transmittedthe first packet and the acknow-ledgement for it

We are ready to start transmission of packet number two

New marking M5

Page 25: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

25

Coloured Petri NetsDepartment of Computer Science

1 (SendPacket ,<n=1, d="COL">)2 (TransmitPacket , <n=1, d="COL">)3 (ReceivePacket , <n=1, d="COL">)4 (TransmitAck , <n=2>)5 (ReceiveAck , <n=2>)

Transition Binding( , )

Binding element

First five steps

Page 26: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

26

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`2

11`(1,"COL ")5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Binding: <n=2,d="OUR">

11`(2,"OUR")

4

New marking M5

Page 27: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

27

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`2

11`(1,"COL ")5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Binding: <n=2,d="OUR">

11`(2,"OUR")

11`(2,"OUR")

4

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

11`2

11`(1, "COL ")5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

New marking M6

Page 28: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

28

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`2

11`(1,"COL ")5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Binding: <n=2,d="OUR">

11`(2,"OUR")

21`(2,"OUR")

11`3

4

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

11`2

11`(1, "COL ")5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

New marking M7

Page 29: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

29

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`2

11`(1,"COL ")5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Binding: <n=3>

21`(2,"OUR")

11`3

11`3

4

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

11`2

11`(1, "COL ")5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

New marking M8

Page 30: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

30

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`2

11`(1,"COL ")5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Binding: <n=3>

21`(2,"OUR")

11`3

1`3

4

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

11`2

11`(1, "COL ")5

1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

New marking M9

Page 31: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

31

Coloured Petri NetsDepartment of Computer Science

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`3

21`(1,"COL ")++1`(2,"OUR")4

1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

We have successfully transmittedthe first twopackets and the acknowledgements for them

We are ready to start transmission of packet number three

New marking M10

Page 32: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

32

Coloured Petri NetsDepartment of Computer Science

Marking after 30 steps

n

n n n

n+1

(n,d)(n,d)

n

(n,d)

(n,d)(n,d)

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

PacketsReceived

B

NOxDATA

PacketsTo Send

1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

NOxDATA NOxDATA

SendPacket

1 1`7

6

1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Dead marking (no transitions are enabled)

We have successfully transmitted all six packets and the acknowledgements for them

There are no more packets to transmit

Page 33: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

33

Coloured Petri NetsDepartment of Computer Science

Double-headed arcs

data

n if successthen 1`nelse empty

n

if n=kthen k+1else k

(n,d)(n,d)

nif n=k then data^delse data

(n,d)

if successthen 1`(n,d)else empty

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

SendPacket

1`1

NO

CD

NO

A

NOxDATA

NextSend1`1

NO

DataReceived

1`""

DATA

B

NOxDATA

PacketsTo Send

AllPackets

NOxDATA

k n

NextReck

if n=kthen k+1else k

NO

1 1`1

11`""6

1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

11`1

Double-headed arc

Double-headed arc

A double arc is a shorthand for two oppositely directed arcs with the same arc expression

We no longer remove the tokens from the input places

Retransmission becomes possible

Constant

Page 34: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

34

Coloured Petri NetsDepartment of Computer Science

Two enabled transitions

data

n if successthen 1`nelse empty

n

if n=kthen k+1else k

(n,d)(n,d)

nif n=k then data^delse data

(n,d)

if successthen 1`(n,d)else empty

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

SendPacket

1`1

NO

CD

NO

A

NOxDATA

NextSend1`1

NO

DataReceived

1`""

DATA

B

NOxDATA

PacketsTo Send

AllPackets

NOxDATA

k n

NextReck

if n=kthen k+1else k

NO

11`(1,"COL")

1 1`1

11`""6

1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

11`1

SP = (SendPacket, <n=1, d="COL">)TP+ = (TransmitPacket, <n=1, d="COL", success=true>)TP

– = (TransmitPacket, <n=1, d="COL", success=false>)

These binding elements need the same token

They are in conflict with each other

Page 35: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

35

Coloured Petri NetsDepartment of Computer Science

Two enabled transitions

data

n if successthen 1`nelse empty

n

if n=kthen k+1else k

(n,d)(n,d)

nif n=k then data^delse data

(n,d)

if successthen 1`(n,d)else empty

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

SendPacket

1`1

NO

CD

NO

A

NOxDATA

NextSend1`1

NO

DataReceived

1`""

DATA

B

NOxDATA

PacketsTo Send

AllPackets

NOxDATA

k n

NextReck

if n=kthen k+1else k

NO

11`(1,"COL")

1 1`1

11`""6

1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

11`1

These bindings elements use different tokens

They are concurrently enabled and can occur concurrently

SP = (SendPacket, <n=1, d="COL">)TP+ = (TransmitPacket, <n=1, d="COL", success=true>)TP

– = (TransmitPacket, <n=1, d="COL", success=false>)

Page 36: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

36

Coloured Petri NetsDepartment of Computer Science

Possible marking after 50 steps

k

if n=kthen k+1else k

k

data

n

n if successthen 1`nelse empty

n

if n=kthen k+1else k

(n,d)(n,d)

nif n=k then data^delse data

(n,d)

if successthen 1`(n,d)else empty

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

SendPacket

NextRec1`1

NO

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

DataReceived

1`""

DATA

B

NOxDATA

PacketsTo Send

AllPackets

NOxDATA

11`5

1 1`5

1 1`4

11`"COLOURED PET"

11`(4,"PET")

6

1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

Receiver is waiting for packet no. 5

Sender is stillsending packet no. 4

An acknowledgement requesting packet no. 5 is arrivingWhen it is received, the sender will start sending packet no. 5

This packetwill be discarded

Page 37: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

37

Coloured Petri NetsDepartment of Computer Science

Dead marking at the end of simulation

k

if n=kthen k+1else k

k

data

n

n if successthen 1`nelse empty

n

if n=kthen k+1else k

(n,d)(n,d)

nif n=k then data^delse data

(n,d)

if successthen 1`(n,d)else empty

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

SendPacket

NextRec1`1

NO

C

NO

D

NO

A

NOxDATA

NextSend1`1

NO

DataReceived

1`""

DATA

B

NOxDATA

PacketsTo Send

AllPackets

NOxDATA

11`71 1`7

11`"COLOURED PETRI NET"6

1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

All packets have been receivedin the correct order

Sender is ready tosend packet no. 7

All buffer placesare empty

Receiver is waiting for packet no. 7

There is no packet no. 7

Page 38: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

38

Coloured Petri NetsDepartment of Computer Science

Transitions can have a guard

k

k

(n,d)

k+1

k

data

k+1

data^d

(n,d)

Discard Packet

ReceiveNextNextRec

1`1

NO

C

NO

DataReceived

1`""

DATA

B

NOxDATA

[n<>k] [n=k]

Guard(<> is theInequality operator)

Guard(tests whether n and kare equal)

Boolean expression which must evaluate to true for the binding element to be enabled.

Additional enabling condition.

Correctpackets

Wrongpackets

andalso and orelse represent respectively the logical conjunction and disjunction operators

Page 39: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

39

Coloured Petri NetsDepartment of Computer Science

k

k

(n,d)

k+1

k

data

k+1

data^d

(n,d)

Discard Packet

[n<>k]

ReceiveNext

[n=k]

NextRec1`1

NO

C

NO

DataReceived

1`""

DATA

B

NOxDATA

11`2

11`""

2

1`(1,"COL")++1`(2,"OUR")

1`"COL"

Guard must evaluate to true

RN1 = (ReceiveNext, <n=1, k=2, d="COL", data="COL">)RN2 = (ReceiveNext, <n=2, k=2, d="OUR", data="COL">)

falsetrue

[n=k]

Page 40: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

40

Coloured Petri NetsDepartment of Computer Science

k

k

(n,d)

k+1

k

data

k+1

data^d

(n,d)

Discard Packet

[n<>k]

ReceiveNext

[n=k]

NextRec1`1

NO

C

NO

DataReceived

1`""

DATA

B

NOxDATA

11`2

11`""

2

1`(1,"COL")++1`(2,"OUR")

1`"COL"

Guard must evaluate to true

DP1 = (DiscardPacket, <n=1, k=2, d="COL" )DP2 = (DiscardPacket, <n=2, k=2, d="OUR")false

true

[n<>k]

Page 41: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

41

Coloured Petri NetsDepartment of Computer Science

Questions

Page 42: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

42

Coloured Petri NetsDepartment of Computer Science

Coloured Petri NetsModelling and Validation of Concurrent Systems

Hierarchical Coloured Petri Nets

Kurt Jensen &Lars Michael Kristensen{kjensen,lmkristensen}@cs.au.dk

Receiver

Receiver

Network

Network

Sender

Sender

PacketsTo Send

AllPackets

NOxDATA

C

NO

D

NO

A

NOxDATA

DataReceived

""

DATAB

NOxDATA

Sender Network Receiver

6

1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

1 1`(1,"COL")

11`""

Page 43: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

43

Coloured Petri NetsDepartment of Computer Science

CPN models can be divided into modules CPN modules play a similar role as modules in

ordinary programming languages. They allow the model to be split into

manageable parts with well-defined interfaces. CPN nets with modules are also called

hierarchical Coloured Petri Nets.

Page 44: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

44

Coloured Petri NetsDepartment of Computer Science

Why do we need modules?

There are often system components that are used repeatedly. Inefficient to model these components several times. Instead we define a module, and use the module repeatedly. In this way there is only one description to read, and one

description to modify when changes are necessary.

Impractical to draw a CPN model of a large system as a single net. Would become very large and unhandy. Could be printed on separate sheets and glued together,

but it would be difficult to get an overview and make a nice layout.

The human modeller needs abstractions that make it possible toconcentrate on only a few details at a time. CPN modules can be seen as black-boxes, where the modeller

(when desired) can forget about the details within the modules. This makes it possible to work at different abstraction levels.

Page 45: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

45

Coloured Petri NetsDepartment of Computer Science

Simple protocol

data

n if successthen 1`nelse empty

n

if n=kthen k+1else k

(n,d)(n,d)

nif n=k then data^delse data

(n,d)

if successthen 1`(n,d)else empty

(n,d)

ReceiveAck

TransmitAck

ReceivePacket

TransmitPacket

SendPacket

1`1

NO

CD

NO

A

NOxDATA

NextSend1`1

NO

DataReceived

1`""

DATA

B

NOxDATA

PacketsTo Send

AllPackets

NOxDATA

k n

NextReck

if n=kthen k+1else k

NO

1 1`1

11`""6

1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")

11`1

Sender Network Receiver

The protocol model can be divided into three modules: Sender. Network. Receiver.

We “cut” the model into three parts: Using the buffer

places as interfaces between the modules.

Page 46: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

46

Coloured Petri NetsDepartment of Computer Science

Sender module

(n,d)

n

(n,d)

n

SendPacket A Out

NOxDATA

D In

NO

NextSend

1`1

NO

AllPackets

NOxDATA

In

Out

PacketsTo SendI/OI/O

ReceiveAck

k n

Input portUsed to import tokens from the environment

Output portUsed to export tokens to the environment

Input/output portUsed to import and export tokens

Internal placeLocal to themodule

The module interacts with other modules via three port places.

Page 47: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

47

Coloured Petri NetsDepartment of Computer Science

Receiver module

(n,d)

if n=k then data^delse data

k

data

ReceivePacket

COut

NO

BIn

NOxDATA

""

DATA

1`1

NO

In

Out

if n=kthen k+1else k

NextRec

DataReceived I/OI/O

if n=kthen k+1else k

Input portUsed to import tokens from the environment

Output portUsed to export tokens to the environment

Input/output portUsed to import andexport tokens

Internal placeLocal to the module

Page 48: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

48

Coloured Petri NetsDepartment of Computer Science

Network module

n

if successthen 1`(n,d)else empty(n,d)

TransmitAck

TransmitPacket

C In

NO

B Out

NOxDATA

DOut

NO

AIn

NOxDATA

In

Out

Out

Inif successthen 1`nelse empty

Input port

Input port

Output port

Output port

Interaction with the sender

Interaction with the receiver

Page 49: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

49

Coloured Petri NetsDepartment of Computer Science

Receiver

Receiver

Network

Network

Sender

Sender

PacketsTo Send

AllPackets

NOxDATA

C

NO

D

NO

A

NOxDATA

DataReceived

""

DATAB

NOxDATA

Sender Network Receiver

Protocol module Provides a more abstract view of the protocol system. “Glues” the three other modules together.

Three substitution transitions referring to three different modules.

Name of substitution transition

Name of submodule

Page 50: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

50

Coloured Petri NetsDepartment of Computer Science

Protocol module

Receiver

Receiver

Network

Network

Sender

Sender

AllPackets

NOxDATA

C

NO

D

NO

A

NOxDATA

DataReceived

""B

NOxDATA

Sender Network Receiver

DATA

PacketsTo Send

Sender

(n,d)

n

(n,d)

n

SendPacket A Out

NOxDATA

D In

NO

NextSend

1`1

NO

AllPackets

NOxDATA

In

Out

PacketsTo SendI/OI/O

ReceiveAck

k n

(n,d)

if n=k then data^delse data

k

data

ReceivePacket

COut

NO

BIn

NOxDATA

""

DATA

1`1

NO

In

Out

if n=kthen k+1else k

NextRec

DataReceived I/OI/O

if n=kthen k+1else kn

if successthen 1`(n,d)else empty(n,d)

TransmitAck

TransmitPacket

C In

NO

B Out

NOxDATA

DOut

NO

AIn

NOxDATA

In

Out

Out

Inif successthen 1`nelse empty

Network Receiver

Page 51: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

51

Coloured Petri NetsDepartment of Computer Science

Fusion sets Modules can exchange tokens via:

Ports. Fusion sets.

Fusion sets allow places in different modules to be “glued” to one compound place ― across the hierarchical structure of the model.

Fusion sets are in some sense similar to global variables known from many programming languages and should therefore be used with care.

Page 52: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

52

Coloured Petri NetsDepartment of Computer Science

Collecting lost packets We collect a copy of the lost packets on place PacketsLost. Each instance of the Transmit module collects separately.

if successthen emptyelse 1`(recv,pack)

if successthen 1`(recv,pack)else empty(recv,pack) Transmit

Packet

PacketsLost

RECVxPACKET

OUT Out

RECVxPACKET

INIn

RECVxPACKET

In Out

Page 53: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

53

Coloured Petri NetsDepartment of Computer Science

Collecting at a single place All instances of the place PacketsLost are “glued together” to

become a single compound place – sharing the same marking.

if successthen emptyelse 1`(recv,pack)

if successthen 1`(recv,pack)else empty(recv,pack) Transmit

Packet

PacketsLost

Lost RECVxPACKET

OUT Out

RECVxPACKET

INInRECVxPACKETIn Out

LostMember of fusion set

Page 54: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

54

Coloured Petri NetsDepartment of Computer Science

Markingif successthen emptyelse 1`(recv,pack)

if successthen 1`(recv,pack)else empty(recv,pack) Transmit

Packet

PacketsLost

Lost RECVxPACKET

OUT Out

RECVxPACKET

INInRECVxPACKETIn Out

Lost

93`(Recv(1),Data((1,"COL")))++1`(Recv(2),Data((1,"COL")))++3`(Recv(3),Data((1,"COL")))++2`(Recv(3),Ack(2))

11`(Recv(1),Data((1,"COL")))

43

13`(Recv(1),Data((1,"COL")))++18`(Recv(2),Data((1,"COL")))++12`(Recv(3),Data((1,"COL")))

if successthen emptyelse 1`(recv,pack)

if successthen 1`(recv,pack)else empty(recv,pack) Transmit

Packet

PacketsLost

Lost RECVxPACKET

OUT Out

RECVxPACKET

INInRECVxPACKETIn Out

Lost

93`(Recv(1),Data((1,"COL")))++1`(Recv(2),Data((1,"COL")))++3`(Recv(3),Data((1,"COL")))++2`(Recv(3),Ack(2))

2

1`(Recv(1),Ack(2))++1`(Recv(2),Ack(2))

5

2`(Recv(1),Ack(2))++3`(Recv(3),Ack(2))

Local

Local

Shared

Shared

TransmitData

TransmitAck

Local

Local

Page 55: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

55

Coloured Petri NetsDepartment of Computer Science

Booleans(trans)trans

data

InitialiseModel Ack Packets

AcksPACKET

Success

Success BOOL

Data PacketsDataPackets

PACKET

Network

unreliable

TRANSMISSION

DataTo Send

"COLOURED PETRI NET"

DATA

DataPackets

Success

Acks

AllDataPackets(data)

AllAckPackets(data)

1 1`unreliable

1 1`"COLOURED PETRI NET"

Initialisation module Initialisation of the CPN model is done in a specific module. Tokens are distributed to the other modules via fusion sets.

Fusion set

Fusion set

Fusion set

Data to be transmitted

Network properties

Page 56: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

56

Coloured Petri NetsDepartment of Computer Science

Booleans(trans)trans

data

InitialiseModel Ack Packets

AcksPACKET

Success

Success BOOL

Data PacketsDataPackets

PACKET

Network

unreliable

TRANSMISSION

DataTo Send

"COLOURED PETRI NET"

DATA

DataPackets

Success

Acks

AllDataPackets(data)

AllAckPackets(data) 6

1`Ack(2)++1`Ack(3)++1`Ack(4)++1`Ack(5)++1`Ack(6)++1`Ack(7)

2

1`false++1`true

6

1`Data((1,"COL"))++1`Data((2,"OUR"))++1`Data((3,"ED "))++1`Data((4,"PET"))++1`Data((5,"RI "))++1`Data((6,"NET"))

Marking after initialisation

Tokens to Sender module

Tokens to Transmit module

Page 57: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

57

Coloured Petri NetsDepartment of Computer Science

Hierarchical versus non-hierarchical nets

In theory, this implies that the hierarchy constructs of CP-nets do not add expressive power to the modelling language.

Any system that can be modelled with a hierarchical CPN model can also be modelled with a non-hierarchical CPN model.

In practice, the hierarchy constructs are very important. They make it possible to structure large models and thereby

cope with the complexity of large systems. Hence they add modelling power.

A hierarchical CPN model can always be transformed into an equivalent non-hierarchical CPN model.

Page 58: Coloured Petri Nets

Kurt Jensen Lars M. Kristensen

58

Coloured Petri NetsDepartment of Computer Science

Questions