outline
play

Outline Introduction Modeling Specifying properties and - PowerPoint PPT Presentation

Outline Introduction Modeling Specifying properties and Verification An example Project assignment References, links Shangzhu Weng Labeled Transition System Analyzer (LTSA) Animate and check the behavior of the overall


  1. Outline • Introduction • Modeling • Specifying properties and Verification • An example • Project assignment • References, links Shangzhu Weng

  2. Labeled Transition System Analyzer (LTSA) • Animate and check the behavior of the overall system before it is implemented • focus on an aspect of interest - concurrency • model animation to visualise a behaviour • mechanical verification of properties (safety & progress) • by Jeff Magee and Jeff Kramer Shangzhu Weng

  3. The Modeling Approach • Equivalent graphical and textual representations • State machines • LTS – Labeled Transition Systems • Process algebra • FSP – Finite State Processes Shangzhu Weng

  4. FSP – action prefix and recursion on SWITCH = OFF, A switch OFF = (on -> ON), 0 1 ON = (off-> OFF). off Substituting to get a more succinct definition: SWITCH = OFF, OFF = (on ->(off->OFF)). And again: SWITCH = (on->off->SWITCH). Shangzhu Weng

  5. FSP – action prefix and recursion on SWITCH = OFF, A switch OFF = (on -> ON), 0 1 ON = (off-> OFF). off If x is an action and P a process then (x-> P) describes a process that initially engages in the action x and then behaves exactly as described by P . Shangzhu Weng

  6. FSP – choice DRINKS = (red->coffee->DRINKS |blue->tea->DRINKS ). blue red A drinks dispensing 0 1 2 machine coffee Shangzhu Weng tea

  7. FSP – choice If x and y are actions then (x-> P | y-> Q) describes a DRINKS = (red->coffee->DRINKS process that initially engages in either of the actions x or |blue->tea->DRINKS y . After the first action has occurred, the subsequent ). behaviour is described by P if the first action was x and Q if the first action was y . blue Who or what makes the red choice? 0 1 2 Is there a difference between input and output actions? coffee tea Shangzhu Weng

  8. FSP – nondeterministic choice COIN = (toss->HEADS|toss->TAILS), toss HEADS= (heads->COIN), toss TAILS= (tails->COIN). Tossing a coin 0 1 2 heads Who makes the choice? tails Process (x-> P | x -> Q) describes a process which engages in x and then behaves as either P or Q. Shangzhu Weng

  9. FSP – indexed processes & actions Single slot buffer that inputs a value in the range 0 to 3 and then outputs that value: BUFF = (in[i:0..3]->out[i]-> BUFF). equivalent to BUFF = (in[0]->out[0]->BUFF |in[1]->out[1]->BUFF |in[2]->out[2]->BUFF |in[3]->out[3]->BUFF ). or using a process parameter with default value: BUFF(N=3) = (in[i:0..N]->out[i]-> BUFF). Shangzhu Weng

  10. FSP – constant & range declaration in.1.1 Using index expressions in.1.0 in.0.1 to model calculation: in.0.0 0 1 2 3 const N = 1 out.0 range T = 0..N out.1 range R = 0..2*N out.2 SUM = (in[a:T][b:T]->TOTAL[a+b]), TOTAL[s:R] = (out[s]->SUM). Shangzhu Weng

  11. FSP – guarded actions COUNT (N=3) = COUNT[0], COUNT[i:0..N] = (when(i<N) inc->COUNT[i+1] |when(i>0) dec->COUNT[i-1] ). inc inc inc 0 1 2 3 dec dec dec The choice (when B x -> P | y -> Q) means that when the guard B is true then the actions x and y are both eligible to be chosen, otherwise if B is false then the action x cannot be chosen. Shangzhu Weng

  12. FSP – guarded actions What is the following FSP process equivalent to? const False = 0 P = (when (False) doanything->P). Answer: STOP Shangzhu Weng

  13. FSP – parallel composition Modeling concurrency: ITCH = (scratch->STOP). CONVERSE = (think->talk->STOP). ||CONVERSE_ITCH = (ITCH || CONVERSE). Commutative: (P||Q) = (Q||P) Associative: (P||(Q||R)) = ((P||Q)||R) = (P||Q||R). Shangzhu Weng

  14. FSP – action interleavings think talk scratch CONVERSE ITCH 0 1 2 0 1 3 states 2 states scratch scratch think talk scratch CONVERSE_ITCH 0 1 2 3 4 5 (0,0) (0,1) (0,2) (1,2) (1,1) (1,0) talk think from ITCH 2 x 3 states from CONVERSE Shangzhu Weng

  15. FSP – shared actions Modeling process interactions: MAKER synchronizes MAKER = (make->ready->MAKER). with USER USER = (ready->use->USER). when ready . ||MAKER_USER = (MAKER || USER). a composite process While unshared actions may be arbitrarily interleaved, a shared action must be executed at the same time by all processes that participate in the shared action. Shangzhu Weng

  16. FSP – process labeling Two instances of a switch process: SWITCH = (on->off->SWITCH). ||TWO_SWITCH = (a:SWITCH || b:SWITCH). a.on b.on a:SWITCH b:SWITCH 0 1 0 1 a.off b.off a:P prefixes each action label in the alphabet of P with a. Shangzhu Weng

  17. FSP – process labeling Two instances of a switch process: SWITCH = (on->off->SWITCH). ||TWO_SWITCH = (a:SWITCH || b:SWITCH). a.on b.on a:SWITCH b:SWITCH 0 1 0 1 a.off b.off An array of instances of the switch process: ||SWITCHES(N=3) = (forall[i:1..N] s[i]:SWITCH). ||SWITCHES(N=3) = (s[i:1..N]:SWITCH). Shangzhu Weng

  18. FSP – process labeling Processes may also be labelled by a set of prefix labels Process prefixing is useful for modeling shared resources: RESOURCE = (acquire->release->RESOURCE). USER = (acquire->use->release->USER). ||RESOURCE_SHARE = (a:USER || b:USER || {a,b}::RESOURCE). Shangzhu Weng

  19. FSP – process labeling a.acquire a.use b.acquire b.use a:USER b:USER 0 1 2 0 1 2 a.release b.release b.acquire a.acquire a.acquire {a,b}::RESOURCE RESOURCE_SHARE 0 1 b.acquire b.use a.use a.release b.release 0 1 2 3 4 RESOURCE = (acquire->release->RESOURCE). b.release USER = (acquire->use->release->USER). ||RESOURCE_SHARE = (a:USER || b:USER a.release || {a,b}::RESOURCE). Shangzhu Weng

  20. FSP – action relabling Relabeling to ensure that composed processes synchronize on particular actions. CLIENT = (call->wait->continue->CLIENT). SERVER = (request->service->reply->SERVER). ||CLIENT_SERVER = (CLIENT || SERVER) /{call/request, reply/wait}. call reply call service CLIENT SERVER 0 1 2 0 1 2 continue reply call service reply CLIENT_SERVER 0 1 2 3 Shangzhu Weng continue

  21. FSP – action hiding Abstraction to reduce complexity: When applied to a process P, the hiding operator \{a1..ax} removes the action names a1..ax from the alphabet of P and makes these concealed actions "silent". These silent actions are labeled tau. Silent actions in different processes are not shared. Sometimes it is more convenient to specify the set of labels to be exposed... When applied to a process P, the interface operator @{a1..ax} hides all actions in the alphabet of P not labeled in the set a1..ax. Shangzhu Weng

  22. FSP – action hiding The following definitions are equivalent: USER = (acquire->use->release->USER) \{use}. USER = (acquire->use->release->USER) @{acquire,release}. Minimization removes hidden tau actions to produce an acquire tau LTS with equivalent observable behavior. 0 1 2 acquire release 0 1 release Shangzhu Weng

  23. Deadlock analysis deadlocked state is one with no outgoing • transitions in FSP: STOP process • MOVE = (north->(south->MOVE|north->STOP)). north north MOVE 0 1 2 south Trace to DEADLOCK: Analysis using LTSA : north (shortest trace to STOP ) north Shangzhu Weng

  24. Deadlock analysis – the Dining Philosopher example Deadlock may arise from the parallel composition of 3 2 2 interacting processes. 1 3 4 1 4 0 0 Shangzhu Weng

  25. Deadlock analysis – the Dining Philosophy example FORK = (get -> put -> FORK). PHIL = (sitdown ->right.get->left.get ->eat ->right.put->left.put ->arise->PHIL). Table of philosophers: ||DINERS(N=5)= forall [i:0..N-1] (phil[i]:PHIL || {phil[i].left,phil[((i-1)+N)%N].right}::FORK). Shangzhu Weng

  26. Deadlock analysis – the Dining Philosophy example Trace to DEADLOCK: phil.0.sitdown phil.0.right.get phil.1.sitdown phil.1.right.get phil.2.sitdown phil.2.right.get phil.3.sitdown phil.3.right.get phil.4.sitdown phil.4.right.get This system deadlocks!! Shangzhu Weng

  27. Deadlock analysis – the Dining Philosophy example Introduce an PHIL(I=0) asymmetry into our = (when (I%2==0) sitdown definition of ->left.get->right.get philosophers. ->eat ->left.put->right.put Use the identity I of ->arise->PHIL a philosopher to make |when (I%2==1) sitdown even numbered ->right.get->left.get philosophers get ->eat their left forks first, ->left.put->right.put odd their right first. ->arise->PHIL Other strategies? ). Shangzhu Weng

  28. Safety properties Safety properties Nothing bad happens • In the model: No reachable ERROR/STOP state • command ACTUATOR =(command->ACTION -1 0 1 |respond->ERROR), ACTION respond =(respond->ACTUATOR command |command->ERROR). Shangzhu Weng

  29. Safety properties Safety properties Nothing bad happens • In the model: No reachable ERROR/STOP state • command property SAFE_ACTUATOR = (command -1 0 1 -> respond -> SAFE_ACTUATOR respond respond ). command In complex systems, it is usually better to specify safety properties by stating directly what is required Shangzhu Weng

Recommend


More recommend