Formele technieken in SWE Petri nets, Proces algebra - 3
Coloured Petri Nets: Alternating Bit Protocol De manier waarop in een P/T net een (globale) toestand voorgesteld wordt, nl. door een aantal tokens in elke plaats, is vaak te weinig expressief. Een mogelijke oplossing is het invoeren van soorten van tokens of van individuele tokens die een waarde voorstellen. Dat vergt dan wel een uitbreiding van het formalisme. We illustreren de algemene idee door een net te ontwerpen dat het AB protocol modelleert. Dan gaan we in op het formalisme.
Coloured Petri Nets: Alternating Bit Protocol Het AB protocol behoort tot de data link laag van het ISO/OSI model: Een host X produceert data frames d. Elk data frame wordt afgeleverd aan het protocol. Dat levert, na transmissie door het netwerk, het data frame af aan host Y. Voorgesteld als net: Alle plaatsen hebben capaciteit 1 (voorgesteld door /1).
Coloured Petri Nets: Alternating Bit Protocol Het kan ook door complementaire plaatsen. Het protocol moet de volgorde van de data frames bewaren, en er mogen er ook geen verloren gaan. Deze voorstelling kan gezien worden als specificatie van het protocol. De d fungeert nu als een variabele, met als mogelijke waarden de waarden van de data frames
Coloured Petri Nets: Alternating Bit Protocol Dit kan maar gegarandeerd worden door de onderliggende laag (physical layer). Dat betekent dat het subnet {A, s, B} verfijnd moet worden. We kiezen voor volgende representatie; data kan in twee richtingen gaan, en fouten worden gesignaleerd door middel van het speciale signaal F.
Coloured Petri Nets: Alternating Bit Protocol Het volledige systeem: Nu moeten A en B nog verfijnd worden:
8.16. AB protocol
Coloured Petri Nets: Alternating Bit Protocol Een data frame gaat via a,c,f,e en b van X naar Y. Transitie a hangt er een bit x aan, initieel 1, en die zal verwijderd worden door transitie b op voorwaarde dat de bit in plaats s9 complementair is. Dit wordt getest door transitie e (met de inv(x) pijl). Wanneer er een error optreedt, dan vuurt g in plaats van h, wat een token F oplevert in s11. Dan zal een negatief acknowledgment een retransmissie van het frame veroorzaken (n gevolgd door en door q).Na een correcte transmissie wordt het volgende data frame gestuurd met complementaire bit x = 0. Als er bij het doorsturen van het acknowledgment een fout optreedt, dan vuurt k in plaats van , en gebeurt er ook een retransmissie. Die wordt gedetecteerd doordat de bit niet veranderd is. Dan vuurt m. i i
Coloured Petri Nets: Formeel Bij de pijlen van de flow relatie staan nu termen, en bij transities kunnen condities staan met daarin termen. Deze termen zijn opgebouwd uit constanten, variabelen en functiesymbolen. Er zijn een aantal soorten van tokens; kleuren. Elke kleur heeft een verzameling van mogelijke waarden. Elke variabele en constante heeft zo een kleur. Bij elke plaats hoort een kleur-domein: die domeinen zijn geconsrueerd met behulp van de kleuren. Een transitie wordt voor het vuren geïnstantieerd door aan de variabelen in de betrokken termen een waarde toe te kennen.
Unfolding: 8.17. Unfolding - eerste stap
Unfolding: 8.18. Unfolding - tweede stap
Proces algebra Ingevoerd vanaf 1980, (R. Milner) als model waarin acties centraal staan. Gaf aanleiding tot de taal CSP - Communicating sequential Processes (T.Hoare). Is nu, in allerlei varianten, het belangrijkste theoretische model voor concurrente systemen. Toepassingen in, bv, model checking tools (SPIN). Calculus van processen, waartussen equivalenties bewezen kunnen worden (bv equivalentie tussen 2 termen die respectievelijk een specificatie en een implementatie voorstelllen)
Proces algebra: basisideën Een systeem is een netwerk van agents die synchroon met elkaar communiceren. Dat communiceren gebeurt via ports die een naam hebben. Dat is alles wat de agents doen. Agents verwijzen naar de ports door middel van complementaire namen, bv a en a ; a staat dan voor input en a voor output. Het gedrag van een agent wordt genoteerd met behulp van die namen, sequentiële compositie ( ), keuze (+) en recursie. De operatie | staat voor concurrente compositie. Zo bouwt men termen (cfr. functionele talen).
Basisideën: voorbeeld Agents A1 en A2 kunnen communiceren via hun gemeenschappelijke poort a: A1 stuurt, A2 ontvangt. Dit gebeurt synchroon, in één actie die gemeenschappelijk door de twee agents wordt uitgevoerd.
Eenvoudige buffer We modeleren een eenvoudige buffer waarin plaats is voor één element: Het gedrag van C wordt gegeven door: C en C’ worden dus geparametrizeerd (met de waarde die in de buffer komt). C en C’ kunnen gezien worden als toestanden van een automaat.
Meervoudige buffer We kunnen nu twee van die cellennaast mekaar plaatsen en ze aan mekaar schakelen: Noteer dat als .Formeel zal dat vereisen dat we de naam out van de eerste cel en de naam in van de tweede cel hernoemen tot een stel complementaire namen, bv. a en a. We kunnen dat ook n keer doen: Dit kunnen we schrijven als een term … .
Meervoudige buffer Stel dat we willen aantonen dat aantonen dat het zo opgebouwde systeem zich gedraagt als een buffer met capaciteit n. Dan kunnen we de specificatie van het gewenste gedrag opschrijven als een term, of een combinatie van termen: De : staat voor concatenatie van woorden. De + voor keuze.
Meervoudige buffer We tonen dan aan dat de termen Buffn(w) en … equivalent zijn (met de juiste notie van equivalentie; zgn. bisimilariteit). Merk op dat de term die de specificatie uitdrukt, hier dus Buffn(w) , geen concurrente samenstelling “|” bevat, terwijl de term die de implementatie uitdrukt die wel bevat. Deze laatste geeft immers aan hoe het systeem is opgebouwd, niet wat het doet.
Meervoudige buffer met acknowledgements We kunnen dit ook veralgemenen tot cellen en buffers die een acknowledgement moeten terugsturen: Cel: Gedrag: Systeem:
Jobshop Beschouw een werkplaats met 2 arbeiders en twee werktuigen (hammer en mallet). Dit kan voorgesteld worden als volgt: Merk op dat een “port” meer dan 2 componenten kan verbinden.
Jobshop: hammer Gebruikte namen: Gedrag: Of nog:
Jobshop: jobber Toestanden: Sort (gebruikte namen): Schema:
Samenstelling De namen puth, puth, geth, geth worden lokaal gemaakt (onzichtbaar naar buiten toe). Als proces term:
Samenstelling Dit wordt voorgesteld als volgt: De lokale ports zijn niet meer beschikbaar voor verdere interacties met andere agents.
Samenstelling De hele jobshop wordt geschreven als ( Jobber | Jobber | hammer | Mallet ) \ L waar L = { geth, puth, getm, putm } De vijf manieren waarop termen gevormd worden:
Specificatie We definiëren een agent Strongjobber die geen hulpmiddelen nodig heeft: De eis gesteld aan Jobshop is dan dat die equivalent moet zijn (hetzelfde gedrag hebben) als twee Strongjobbers: Deze keer bevat de specificatie dus wel een “|”.
Proces algebra: formeel Alfabet: L = A A Term P kan actie l uitvoeren en verandert daardoor in term Q: P Q l Het gedrag van samengestelde termen kan afgeleid worden uit dat van hun componenten: Bekijk bv. A en B :
Afleiden van stappen Bekijk nu de term A | B. a a Uit A A’ volgt dat A|B A’|B Uit A’ A volgt dat A’|B A|B Uit A’ A en B B’ volgt dat A’|B A|B’ c c c c
De stille actie De communicatie via c is een communicatie tussen twee, en niet meer agents. De kan dus niet meer gesynchronizeerd worden met een complementaire actie van een derde agent. Een actie kan lokaal gemaakt worden door “hiding” (\L met de set van te verbergen namen). Als C bv een agent is die actie c kan uitvoeren, dan kan de A’ in A’|B|C communiceren (via c) met B en C, maar in ( (A’|B) \{c} ) | C kan A’ alleen met B communiceren via c.
Transitie-boom en -graph
Afleidingsregels voor de transities Structured Operational Semantics: de regels corresponderen met de manier waarop termen (programma’s) opgebouwd zijn.
Afleidingsregels: gebruik Om aan te tonen dat Construeren we een proof tree:
Recursie De definitie A = a.A kan geschreven worden als A = fix(X = a.X). (cfr de fixpuntcombinator bij het functioneel programmeren) We introduceren dus een nieuwe soort expressies (met fix), En daarbij hoort een nieuwe regel:
Bisimulatie Twee termen zijn (semantisch) gelijk wanner ze hetzelfde gedrag vertonen. Hier betekent “hetzelfde gedrag” niet alleen dat dezelfde acties kunnen uitgevoerd worden, maar ook “op dezelfde manier interageren met andere agents”. Daarom zijn bv a.(b|c) en a.b | a.c niet equivalent. De gebruikte equivalentie is gebaseerd op bisimulatie: Een relatie ~ tussen termen is een bisimulatie als er voor elke A ~ B en elke mogelijke stap a van A (resp B) een stap a vanuit B mogelijk is, zo dat de bereikte termen opnieuw gerelateerd zijn door ~ : A ~ B A’ ~ B’ a a
Bisimulatie Met behulp van de afleidingsregels kan men dan algebraïsche vergelijkingen gaan bewijzen die het redeneren over equivalentie van termen eenvoudiger maken: P + Q = O + P P + (Q + R) = (P + Q) + R P + .P = .P …
Proces algebra Vormen nog steeds een zeer actueel onderzoeksgebied Grondslag voor allerlei tools, bv voor verificatie en modelllering Er bestaan veel varianten: bv -calculus, ambient calculus, … Er bestaan “modeltransformaties” van termen naar Petri netten en omgekeerd.
Van term naar P/T net Regels:
Van term naar P/T net Voorbeeld: