#define NRED (34) #define NBLUE (35) #define NGREEN (30) short nRed = NRED; short nBlue = NBLUE; short nGreen = NGREEN; active proctype mutations() { do :: d_step { nRed && nBlue; nRed--; nBlue--; nGreen = nGreen + 2; } :: d_step { nRed && nGreen; nRed--; nGreen--; nBlue = nBlue + 2; } :: d_step { nBlue && nGreen; nBlue--; nGreen--; nRed = nRed + 2; } :: else // Do nothing od } active proctype observer() { do :: printf("%d R, %d B, %d G chameleons\n", nRed , nBlue, nGreen); od }