Skip to main content

Cheat Sheet

Author @wadhah101

conditions​

if no instruction is executable "if" blocks else if only one is it's options will gets excuted else if multiple insctructions are valid, one will be randomly chosen

proctype A(){
if
::instr1 -> options1
::instrN -> optionsN
fi;
}

While loop​

the instruction to execute is chosen randomly

do
:: count = count - 1
:: (count == 0) -> break;
od;

Functions​

    proctype A() {
work();
}

Main​

<!-- note:  every functions runs in parllel with no particular order -->
init {
run A(2); run B(2,3);
}

<!-- or use active before function definition -->
active proctype A() {
work();
}

Atomic instruction​

java​

class Main {

synchronized void work() {}
}

promela​

proctype A(){
atomic
{
work();
}
}

Channels ( ~ Arrays )​

definition​

chan gname = [20] of {short}
chan gnameObject = [10] of {short, byte}

send​

proctype A(chan q) {
q!28 ;
}

receive​

proctype A(chan q) {
int x ;
q?x ;
}

Finite state machines modeling​

we have 4 place s1 , s2 , s3 , s4

proctype A(){
s1: if
:: x ? a -> goto s2
:: x ? b -> goto s3
:: else -> skip
s2 : ..

s3 :
goto s4 ;
}