local
a [0..7]*
w [0..1]*
s [0..1]*
b [0..1]* 

global

transitions
local a = 0 => a:=1 & b:=1;

local a = 1 & forallr s=0 & foralll s=0 => a:=2 & b:=0;

local a = 2 => a:=3 & w:=1 & s:=1;

local a = 3 & itexistsl (b = 0 & w = 0 )  => a:=4 & s:=0;
local a = 3 & itexistsr (b = 0 & w = 0 ) => a:=4 & s:=0;

local a = 3 & foralll (b = 1 | w = 1 ) &
       forallr (b = 1 & w = 1 ) => a:=5 & w:=0;

local a = 4 & itexistsl (s = 1 & w = 0) => a:=5 & w:=0 & s:=1;
local a = 4 & itexistsr (s = 1 & w = 0) => a:=5 & w:=0 & s:=1;

local a = 5 & foralll w = 0 & forallr w = 0 => a:=6;

local a = 6 & foralll s = 0  => a:=7;

local a = 7 => a:=0 & s:=0;


initial 
: a=0 & w=0 & s=0 & b=0, a=0 & w=0 & s=0 & b=0;

final
: a=7 , a=7;
