/* Beverage Machine with refill */

byte coke = 255; // initial number of available cokes
byte sprite = 255; // initial number of available sprites

active proctype BM(){  
  do
    :: (true) -> skip; /* insert coin */
       if
         :: (sprite == 0 && coke == 0) -> skip /* return coin */
         :: (coke > 0) -> coke = coke - 1 /* user selects coke */
         :: (sprite > 0) -> sprite = sprite - 1 /* user selects sprite */
       fi
    :: (true) -> coke = 255; sprite = 255 /* refill */
  od
}