Mcrl2 by kashif.namal@gmail.com, adnanskyousafzai@gmail.com

  • View
    148

  • Download
    0

  • Category

    Science

Preview:

Citation preview

MCRL2 By

Kashif khanKashif.namal@gmail.com

Muhammad Yasir khan Adnan Saleem

adnanskyousafzai@gmail.comMuhammad Ejaz khan

University of Camerino Italy

Introduction to mCRL2 LPS , LTS,PBES Operators Vending Machine Odd counter Login Car park Phone book

Outlines

Micro Common representation language 2 Specification Language Used for modeling , verification and

validation Based on Algebra of communicating process

include data and time. Process perform actions, can carry data as

parameter Every process has LTS contain all states

mCRL2

mCRL2 Principle

Flow Diagram

Stored in binary Format LTS constructed from LPS LPS, symbolic representation of LTS to

describe behavior of system explicitly LPS can be printed in Human Readable

format LPS is speedy than LTS Statistical info Can be collected in LPSPP

LPS

Generated from LPS It show the LPS as node link Diagram

(ltsgraph) LTSVIEW to reduce the complexity of

image(3D) DIAGRAPHICA reduce complexity to 2D LTSCONVERT smaller than Original LTS LTSCOMPARE check weather the two LTS are

behaviorally equal or not

LTS

Parameterized Boolean Equation system Input needed for model checking, is a

formula expressing a desired property that the system should not violate (or satisfy)

Pbes stored in Binary format Pbespp stored in human readable format. BES genrated from PBES

PBES

Sortdata type definition using keyword sort. Sorts are

non-empty, possibly infinite sets with data elements.

sort D; cons c, d : D; declares sort D in which all elements can be

denoted by either c or d. Now for Boolean sort B cons true, false : B;

Data Specification

The sum operator allows to formulate the choice between a possibly infinite number of processes in a very concise way.

The process sum n: Nat . p(n) can be seen as a shorthand for p(0) + p(1) + p(2) + .... The use of the sum operator is often to indicate that some value must be read, i.e., the process wants to read either a 0 or a 1 or a 2,

sort Val = struct c2 | c5 | c10; act coin: Val; init sum v: Val . coin(v); act num: Nat; init sum v: Nat . num(2 * v);

Sum operator

sort Val = struct c2 | c5 | c10; act coffee; coin, rej: Val; proc P = sum v: Val . coin(v) . ( (v != c10) -> rej(v) . P + (v == c10) ->

coffee . P ); init P;

Sum

We can let data influence the course of events by adding conditions to the process

c -> p <> q implies if c then do process p else do process q

act tick, reset; proc Clock(n: Nat) = (n < 99) -> tick . Clock(n +

1) <> tick . Clock(0) + (n < 50) -> reset . Clock(0);

init Clock(0);

Condition

comm({a|b -> c}, p) .. multi-actions are renamed to a single action... actions a and b must communicate to c in process p.

act a, b, c: Nat; proc P = a(1) || b(1); init comm({a|b->c}, P);

Communication

Allow (allow(A, P)) removes all multi-actions from the

transition system that do not occur in A. Any states that have become unreachable will also be removed by mCRL2, as the resulting system is smaller and bisimilar.

allow({c}; p) only multi-actions consisting of a single c are allowed in p.

allow({c},comm({send|read- > c}, send||read))

Allow

After inserting a coin of 10 cents, the user can push the button for an apple. An apple will then be put in the drawer of the machine.

act ins10, optA, acc10, putA, coin, ready ; proc User = ins10 . optA . User ; Mach = acc10 . putA . Mach ; init allow( { coin, ready }, comm( { ins10|acc10 -> coin, optA|putA -

> ready }, User || Mach ) ) ;

Simple Vending Machine

sort Value= struct even | odd; act r1,r2:Nat; s1,s2,s3 : Value; proc P=sum n:Nat.(n<5)->r1(n).s1(if(n mod 2 == 0, even, odd)).P; Q(n:Nat)=sum v:Value.s2(v).((v==even)->tau +(v==odd)->r2(n)).Q(n=min(5,n+1)); init allow ({r1,r2}, comm ({s1|s2->s3}, P||Q(0)));

Odd counterFilterP

Counter Q

r1 r2s1 s2s3

◦ no deadlock?[true*]<true>true

◦ an input (r1) is always followed by an output (s3)?[true*.r1.(!s3)*]<(!s3)*.s3>true

Formula

User first check the system if the system working the user enter password and username, if it is already in the database the user login to the system if not available then the user first go for signup and insert all the data.

Login system

 [true*]<true>true

password needed (1): [loginpage] < true* . enterpassword > true   (that is: the first ‘loginpage’ can be followed by ‘enterpassword’)

password needed (2): [true* . loginpage] < true* . enterpassword > true   (that is: every ‘loginpage’ can be followed by ‘enterpassword’)

Formula

mCRL2 specication before linearisation: act order, receive, keep, refund; return; proc Start = order .Ordered; Ordered = receive. Received +

refund .Start; Received = return .Ordered + keep; init Start;

Linearization

sort State = struct start | ordered | received; act order, receive, keep, refund, return;proc P(s : State) = (s =start) -> order . P(ordered)+ (s =ordered) -> receive . P(received)+ (s = ordered) ->refund . P(start)+ (s =received) -> return . P(ordered)+ (s = received) -> keep;init P(start);

After linearization

Counter

act enter_car,

enter_cash,recive_recipt,car_park,open_gate,acc_cash,give_recipt, entercar,cash,recipt,park,acc_gate;proc User = enter_car . enter_cash. recive_recipt . car_park . User; Machine =acc_gate . acc_cash . give_recipt. open_gate . Machine; init allow( {entercar,cash,recipt,park },comm( {enter_car|acc_gate -> entercar, enter_cash|acc_cash->cash,

recive_recipt|give_recipt->recipt, car_park|open_gate->park }, User || Machine

) ) ;

Car Park

sort Name = struct n0 | n1 ; PhoneNumber = struct p0 | p1 ; PhoneBook = Name -> PhoneNumber; map book: Name -> PhoneNumber; var n: Name; eqn book(n) = p0; act addPhone: Name # PhoneNumber; delPhone: Name; findPhone: Name; proc PhoneDir(b: PhoneBook) = sum n: Name, p: PhoneNumber . (p != p0) -> addPhone(n, p) . PhoneDir(b[n->p]) + sum n: Name . findPhone(n) . PhoneDir() + sum n: Name . delPhone(n) . PhoneDir(b[n->p0]); init PhoneDir(book);

Phone Book

Any Question

Recommended