var buffer_empty : BOOLEAN; buffer_filled : BOOLEAN; ready_to_produce : BOOLEAN; ready_to_deliver : BOOLEAN; ready_to_remove : BOOLEAN; ready_to_consume : BOOLEAN; Rule "DELIVER" ((ready_to_deliver=TRUE) & (buffer_empty=TRUE)) ==> begin ready_to_deliver:=FALSE; buffer_empty:=FALSE; ready_to_produce:=TRUE; buffer_filled:=TRUE; end; Rule "PRODUCE" ready_to_produce=TRUE ==> begin ready_to_produce:=FALSE; ready_to_deliver:=TRUE; end; Rule "CONSUME" ready_to_consume=TRUE ==> begin ready_to_consume:=FALSE; ready_to_remove:=TRUE; end; Rule "REMOVE" ((buffer_filled=TRUE) & (ready_to_remove=TRUE)) ==> begin buffer_filled:=FALSE; ready_to_remove:=FALSE; buffer_empty:=TRUE; ready_to_consume:=TRUE; end; startstate begin ready_to_consume:=FALSE; ready_to_remove:=TRUE; ready_to_deliver:=FALSE; ready_to_produce:=TRUE; buffer_filled:=FALSE; buffer_empty:=TRUE; end;