You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

303 lines
47 KiB

1 year ago
  1. //
  2. // WGWGWGWGWGWGWGWGWGWGWGWGWG
  3. // WGXR WG
  4. // WG WGWGWGWGWGWGWGWGWG WG
  5. // WG SBWG
  6. // WGZGSB SBSB SB SB WG
  7. // WG SB WG
  8. // WG SB WG
  9. // WG SB SB SB ZBWG
  10. // WG SB WG
  11. // WG SB SB SB WG
  12. // WG WGWGWGWGWGWGWGWGWG WG
  13. // WG GRWG
  14. // WGWGWGWGWGWGWGWGWGWGWGWGWG
  15. //
  16. // A string representation of a farama minigrid (https://minigrid.farama.org/) with
  17. // an agent (XR) and adversaries (ZG, ZB).
  18. //
  19. // The agent has to move to its goal (GR) while avoiding the adversaries. The agent experiences a stochastic update on a slippery tile (SB).
  20. smg
  21. global move : [0..2] init 0;
  22. label AgentOnBlue = (xAgent=1&yAgent=1) | (xAgent=1&yAgent=2) | (xAgent=1&yAgent=3) | (xAgent=1&yAgent=6) | (xAgent=1&yAgent=7) | (xAgent=1&yAgent=8) | (xAgent=1&yAgent=9) | (xAgent=1&yAgent=10) | (xAgent=1&yAgent=11) | (xAgent=2&yAgent=1) | (xAgent=2&yAgent=11) | (xAgent=3&yAgent=1) | (xAgent=3&yAgent=2) | (xAgent=3&yAgent=3) | (xAgent=3&yAgent=4) | (xAgent=3&yAgent=5) | (xAgent=3&yAgent=6) | (xAgent=3&yAgent=7) | (xAgent=3&yAgent=8) | (xAgent=3&yAgent=9) | (xAgent=3&yAgent=10) | (xAgent=3&yAgent=11);
  23. label BlueOnBlue = (xBlue=1&yBlue=1) | (xBlue=1&yBlue=2) | (xBlue=1&yBlue=3) | (xBlue=1&yBlue=6) | (xBlue=1&yBlue=7) | (xBlue=1&yBlue=8) | (xBlue=1&yBlue=9) | (xBlue=1&yBlue=10) | (xBlue=1&yBlue=11) | (xBlue=2&yBlue=1) | (xBlue=2&yBlue=11) | (xBlue=3&yBlue=1) | (xBlue=3&yBlue=2) | (xBlue=3&yBlue=3) | (xBlue=3&yBlue=4) | (xBlue=3&yBlue=5) | (xBlue=3&yBlue=6) | (xBlue=3&yBlue=7) | (xBlue=3&yBlue=8) | (xBlue=3&yBlue=9) | (xBlue=3&yBlue=10) | (xBlue=3&yBlue=11);
  24. label GreenOnBlue = (xGreen=1&yGreen=1) | (xGreen=1&yGreen=2) | (xGreen=1&yGreen=3) | (xGreen=1&yGreen=6) | (xGreen=1&yGreen=7) | (xGreen=1&yGreen=8) | (xGreen=1&yGreen=9) | (xGreen=1&yGreen=10) | (xGreen=1&yGreen=11) | (xGreen=2&yGreen=1) | (xGreen=2&yGreen=11) | (xGreen=3&yGreen=1) | (xGreen=3&yGreen=2) | (xGreen=3&yGreen=3) | (xGreen=3&yGreen=4) | (xGreen=3&yGreen=5) | (xGreen=3&yGreen=6) | (xGreen=3&yGreen=7) | (xGreen=3&yGreen=8) | (xGreen=3&yGreen=9) | (xGreen=3&yGreen=10) | (xGreen=3&yGreen=11);
  25. label AgentOnGreen = (xAgent=9&yAgent=1) | (xAgent=9&yAgent=2) | (xAgent=9&yAgent=3) | (xAgent=9&yAgent=4) | (xAgent=9&yAgent=5) | (xAgent=9&yAgent=6) | (xAgent=9&yAgent=7) | (xAgent=9&yAgent=8) | (xAgent=9&yAgent=9) | (xAgent=9&yAgent=10) | (xAgent=9&yAgent=11) | (xAgent=10&yAgent=1) | (xAgent=10&yAgent=11) | (xAgent=11&yAgent=1) | (xAgent=11&yAgent=2) | (xAgent=11&yAgent=3) | (xAgent=11&yAgent=4) | (xAgent=11&yAgent=5) | (xAgent=11&yAgent=6) | (xAgent=11&yAgent=7) | (xAgent=11&yAgent=8) | (xAgent=11&yAgent=9) | (xAgent=11&yAgent=10) | (xAgent=11&yAgent=11);
  26. label BlueOnGreen = (xBlue=9&yBlue=1) | (xBlue=9&yBlue=2) | (xBlue=9&yBlue=3) | (xBlue=9&yBlue=4) | (xBlue=9&yBlue=5) | (xBlue=9&yBlue=6) | (xBlue=9&yBlue=7) | (xBlue=9&yBlue=8) | (xBlue=9&yBlue=9) | (xBlue=9&yBlue=10) | (xBlue=9&yBlue=11) | (xBlue=10&yBlue=1) | (xBlue=10&yBlue=11) | (xBlue=11&yBlue=1) | (xBlue=11&yBlue=2) | (xBlue=11&yBlue=3) | (xBlue=11&yBlue=4) | (xBlue=11&yBlue=5) | (xBlue=11&yBlue=6) | (xBlue=11&yBlue=7) | (xBlue=11&yBlue=8) | (xBlue=11&yBlue=9) | (xBlue=11&yBlue=10) | (xBlue=11&yBlue=11);
  27. label GreenOnGreen = (xGreen=9&yGreen=1) | (xGreen=9&yGreen=2) | (xGreen=9&yGreen=3) | (xGreen=9&yGreen=4) | (xGreen=9&yGreen=5) | (xGreen=9&yGreen=6) | (xGreen=9&yGreen=7) | (xGreen=9&yGreen=8) | (xGreen=9&yGreen=9) | (xGreen=9&yGreen=10) | (xGreen=9&yGreen=11) | (xGreen=10&yGreen=1) | (xGreen=10&yGreen=11) | (xGreen=11&yGreen=1) | (xGreen=11&yGreen=2) | (xGreen=11&yGreen=3) | (xGreen=11&yGreen=4) | (xGreen=11&yGreen=5) | (xGreen=11&yGreen=6) | (xGreen=11&yGreen=7) | (xGreen=11&yGreen=8) | (xGreen=11&yGreen=9) | (xGreen=11&yGreen=10) | (xGreen=11&yGreen=11);
  28. label AgentOnRed = (xAgent=1&yAgent=4) | (xAgent=1&yAgent=5);
  29. label BlueOnRed = (xBlue=1&yBlue=4) | (xBlue=1&yBlue=5);
  30. label GreenOnRed = (xGreen=1&yGreen=4) | (xGreen=1&yGreen=5);
  31. formula AgentCannotMoveNorth = (xAgent=1&yAgent=2) | (xAgent=1&yAgent=3) | (xAgent=1&yAgent=4) | (xAgent=1&yAgent=5) | (xAgent=1&yAgent=6) | (xAgent=1&yAgent=7) | (xAgent=1&yAgent=8) | (xAgent=1&yAgent=9) | (xAgent=1&yAgent=10) | (xAgent=1&yAgent=11) | (xAgent=3&yAgent=2) | (xAgent=3&yAgent=3) | (xAgent=3&yAgent=4) | (xAgent=3&yAgent=5) | (xAgent=3&yAgent=6) | (xAgent=3&yAgent=7) | (xAgent=3&yAgent=8) | (xAgent=3&yAgent=9) | (xAgent=3&yAgent=10) | (xAgent=11&yAgent=2) | (xAgent=11&yAgent=3) | (xAgent=11&yAgent=4) | (xAgent=11&yAgent=5) | (xAgent=11&yAgent=6) | (xAgent=11&yAgent=7) | (xAgent=11&yAgent=8) | (xAgent=11&yAgent=9) | (xAgent=11&yAgent=10) | (xAgent=1&yAgent=1);
  32. formula AgentCannotMoveEast = (xAgent=1&yAgent=11) | (xAgent=2&yAgent=1) | (xAgent=2&yAgent=11) | (xAgent=4&yAgent=11) | (xAgent=5&yAgent=11) | (xAgent=6&yAgent=11) | (xAgent=8&yAgent=11) | (xAgent=9&yAgent=11) | (xAgent=10&yAgent=1) | (xAgent=10&yAgent=11) | (xAgent=11&yAgent=11) | (xAgent=7&yAgent=11);
  33. formula AgentCannotMoveSouth = (xAgent=1&yAgent=2) | (xAgent=1&yAgent=3) | (xAgent=1&yAgent=4) | (xAgent=1&yAgent=5) | (xAgent=1&yAgent=6) | (xAgent=1&yAgent=7) | (xAgent=1&yAgent=8) | (xAgent=1&yAgent=9) | (xAgent=1&yAgent=10) | (xAgent=9&yAgent=2) | (xAgent=9&yAgent=3) | (xAgent=9&yAgent=5) | (xAgent=9&yAgent=6) | (xAgent=9&yAgent=8) | (xAgent=9&yAgent=9) | (xAgent=11&yAgent=1) | (xAgent=11&yAgent=2) | (xAgent=11&yAgent=3) | (xAgent=11&yAgent=4) | (xAgent=11&yAgent=5) | (xAgent=11&yAgent=6) | (xAgent=11&yAgent=7) | (xAgent=11&yAgent=8) | (xAgent=11&yAgent=9) | (xAgent=11&yAgent=10) | (xAgent=11&yAgent=11);
  34. formula AgentCannotMoveWest = (xAgent=2&yAgent=1) | (xAgent=2&yAgent=11) | (xAgent=3&yAgent=1) | (xAgent=5&yAgent=1) | (xAgent=6&yAgent=1) | (xAgent=7&yAgent=1) | (xAgent=8&yAgent=1) | (xAgent=9&yAgent=1) | (xAgent=10&yAgent=1) | (xAgent=10&yAgent=11) | (xAgent=11&yAgent=1) | (xAgent=1&yAgent=1) | (xAgent=4&yAgent=1);
  35. formula AgentIsOnSlippery = (xAgent=3&yAgent=11) | (xAgent=4&yAgent=2) | (xAgent=4&yAgent=4) | (xAgent=4&yAgent=5) | (xAgent=4&yAgent=7) | (xAgent=4&yAgent=9) | (xAgent=5&yAgent=10) | (xAgent=6&yAgent=4) | (xAgent=7&yAgent=3) | (xAgent=7&yAgent=6) | (xAgent=7&yAgent=9) | (xAgent=8&yAgent=2) | (xAgent=9&yAgent=4) | (xAgent=9&yAgent=7) | (xAgent=9&yAgent=10);
  36. label AgentGoal = (xAgent=11&yAgent=11);
  37. formula BlueCannotMoveNorth = (xBlue=1&yBlue=2) | (xBlue=1&yBlue=3) | (xBlue=1&yBlue=4) | (xBlue=1&yBlue=5) | (xBlue=1&yBlue=6) | (xBlue=1&yBlue=7) | (xBlue=1&yBlue=8) | (xBlue=1&yBlue=9) | (xBlue=1&yBlue=10) | (xBlue=1&yBlue=11) | (xBlue=3&yBlue=2) | (xBlue=3&yBlue=3) | (xBlue=3&yBlue=4) | (xBlue=3&yBlue=5) | (xBlue=3&yBlue=6) | (xBlue=3&yBlue=7) | (xBlue=3&yBlue=8) | (xBlue=3&yBlue=9) | (xBlue=3&yBlue=10) | (xBlue=11&yBlue=2) | (xBlue=11&yBlue=3) | (xBlue=11&yBlue=4) | (xBlue=11&yBlue=5) | (xBlue=11&yBlue=6) | (xBlue=11&yBlue=7) | (xBlue=11&yBlue=8) | (xBlue=11&yBlue=9) | (xBlue=11&yBlue=10) | (xBlue=1&yBlue=1);
  38. formula BlueCannotMoveEast = (xBlue=1&yBlue=11) | (xBlue=2&yBlue=1) | (xBlue=2&yBlue=11) | (xBlue=4&yBlue=11) | (xBlue=5&yBlue=11) | (xBlue=6&yBlue=11) | (xBlue=8&yBlue=11) | (xBlue=9&yBlue=11) | (xBlue=10&yBlue=1) | (xBlue=10&yBlue=11) | (xBlue=11&yBlue=11) | (xBlue=7&yBlue=11);
  39. formula BlueCannotMoveSouth = (xBlue=1&yBlue=2) | (xBlue=1&yBlue=3) | (xBlue=1&yBlue=4) | (xBlue=1&yBlue=5) | (xBlue=1&yBlue=6) | (xBlue=1&yBlue=7) | (xBlue=1&yBlue=8) | (xBlue=1&yBlue=9) | (xBlue=1&yBlue=10) | (xBlue=9&yBlue=2) | (xBlue=9&yBlue=3) | (xBlue=9&yBlue=5) | (xBlue=9&yBlue=6) | (xBlue=9&yBlue=8) | (xBlue=9&yBlue=9) | (xBlue=11&yBlue=1) | (xBlue=11&yBlue=2) | (xBlue=11&yBlue=3) | (xBlue=11&yBlue=4) | (xBlue=11&yBlue=5) | (xBlue=11&yBlue=6) | (xBlue=11&yBlue=7) | (xBlue=11&yBlue=8) | (xBlue=11&yBlue=9) | (xBlue=11&yBlue=10) | (xBlue=11&yBlue=11);
  40. formula BlueCannotMoveWest = (xBlue=2&yBlue=1) | (xBlue=2&yBlue=11) | (xBlue=3&yBlue=1) | (xBlue=5&yBlue=1) | (xBlue=6&yBlue=1) | (xBlue=7&yBlue=1) | (xBlue=8&yBlue=1) | (xBlue=9&yBlue=1) | (xBlue=10&yBlue=1) | (xBlue=10&yBlue=11) | (xBlue=11&yBlue=1) | (xBlue=1&yBlue=1) | (xBlue=4&yBlue=1);
  41. formula BlueIsOnSlippery = (xBlue=3&yBlue=11) | (xBlue=4&yBlue=2) | (xBlue=4&yBlue=4) | (xBlue=4&yBlue=5) | (xBlue=4&yBlue=7) | (xBlue=4&yBlue=9) | (xBlue=5&yBlue=10) | (xBlue=6&yBlue=4) | (xBlue=7&yBlue=3) | (xBlue=7&yBlue=6) | (xBlue=7&yBlue=9) | (xBlue=8&yBlue=2) | (xBlue=9&yBlue=4) | (xBlue=9&yBlue=7) | (xBlue=9&yBlue=10);
  42. label BlueGoal = (xBlue=11&yBlue=11);
  43. formula GreenCannotMoveNorth = (xGreen=1&yGreen=2) | (xGreen=1&yGreen=3) | (xGreen=1&yGreen=4) | (xGreen=1&yGreen=5) | (xGreen=1&yGreen=6) | (xGreen=1&yGreen=7) | (xGreen=1&yGreen=8) | (xGreen=1&yGreen=9) | (xGreen=1&yGreen=10) | (xGreen=1&yGreen=11) | (xGreen=3&yGreen=2) | (xGreen=3&yGreen=3) | (xGreen=3&yGreen=4) | (xGreen=3&yGreen=5) | (xGreen=3&yGreen=6) | (xGreen=3&yGreen=7) | (xGreen=3&yGreen=8) | (xGreen=3&yGreen=9) | (xGreen=3&yGreen=10) | (xGreen=11&yGreen=2) | (xGreen=11&yGreen=3) | (xGreen=11&yGreen=4) | (xGreen=11&yGreen=5) | (xGreen=11&yGreen=6) | (xGreen=11&yGreen=7) | (xGreen=11&yGreen=8) | (xGreen=11&yGreen=9) | (xGreen=11&yGreen=10) | (xGreen=1&yGreen=1);
  44. formula GreenCannotMoveEast = (xGreen=1&yGreen=11) | (xGreen=2&yGreen=1) | (xGreen=2&yGreen=11) | (xGreen=4&yGreen=11) | (xGreen=5&yGreen=11) | (xGreen=6&yGreen=11) | (xGreen=8&yGreen=11) | (xGreen=9&yGreen=11) | (xGreen=10&yGreen=1) | (xGreen=10&yGreen=11) | (xGreen=11&yGreen=11) | (xGreen=7&yGreen=11);
  45. formula GreenCannotMoveSouth = (xGreen=1&yGreen=2) | (xGreen=1&yGreen=3) | (xGreen=1&yGreen=4) | (xGreen=1&yGreen=5) | (xGreen=1&yGreen=6) | (xGreen=1&yGreen=7) | (xGreen=1&yGreen=8) | (xGreen=1&yGreen=9) | (xGreen=1&yGreen=10) | (xGreen=9&yGreen=2) | (xGreen=9&yGreen=3) | (xGreen=9&yGreen=5) | (xGreen=9&yGreen=6) | (xGreen=9&yGreen=8) | (xGreen=9&yGreen=9) | (xGreen=11&yGreen=1) | (xGreen=11&yGreen=2) | (xGreen=11&yGreen=3) | (xGreen=11&yGreen=4) | (xGreen=11&yGreen=5) | (xGreen=11&yGreen=6) | (xGreen=11&yGreen=7) | (xGreen=11&yGreen=8) | (xGreen=11&yGreen=9) | (xGreen=11&yGreen=10) | (xGreen=11&yGreen=11);
  46. formula GreenCannotMoveWest = (xGreen=2&yGreen=1) | (xGreen=2&yGreen=11) | (xGreen=3&yGreen=1) | (xGreen=5&yGreen=1) | (xGreen=6&yGreen=1) | (xGreen=7&yGreen=1) | (xGreen=8&yGreen=1) | (xGreen=9&yGreen=1) | (xGreen=10&yGreen=1) | (xGreen=10&yGreen=11) | (xGreen=11&yGreen=1) | (xGreen=1&yGreen=1) | (xGreen=4&yGreen=1);
  47. formula GreenIsOnSlippery = (xGreen=3&yGreen=11) | (xGreen=4&yGreen=2) | (xGreen=4&yGreen=4) | (xGreen=4&yGreen=5) | (xGreen=4&yGreen=7) | (xGreen=4&yGreen=9) | (xGreen=5&yGreen=10) | (xGreen=6&yGreen=4) | (xGreen=7&yGreen=3) | (xGreen=7&yGreen=6) | (xGreen=7&yGreen=9) | (xGreen=8&yGreen=2) | (xGreen=9&yGreen=4) | (xGreen=9&yGreen=7) | (xGreen=9&yGreen=10);
  48. label GreenGoal = (xGreen=11&yGreen=11);
  49. label crash = (xAgent=xBlue)&(yAgent=yBlue) | (xAgent=xGreen)&(yAgent=yGreen);
  50. formula crashHappened = (xAgent=xBlue)&(yAgent=yBlue) | (xAgent=xGreen)&(yAgent=yGreen);
  51. module Agent
  52. xAgent : [1..12] init 1;
  53. yAgent : [1..12] init 1;
  54. viewAgent : [0..3] init 1;
  55. [Agent_turn_right] !crashHappened & move=0 & true -> (viewAgent'=mod(viewAgent + 1, 4)) & (move'=1) ;
  56. [Agent_turn_left] !crashHappened & move=0 & viewAgent>0 -> (viewAgent'=viewAgent - 1) & (move'=1) ;
  57. [Agent_turn_left] !crashHappened & move=0 & viewAgent=0 -> (viewAgent'=3) & (move'=1) ;
  58. [Agent_move_north] !crashHappened & move=0 & viewAgent=3 & !AgentIsOnSlippery & !AgentCannotMoveNorth -> (xAgent'=xAgent-1) & (move'=1) ;
  59. [Agent_move_east] !crashHappened & move=0 & viewAgent=0 & !AgentIsOnSlippery & !AgentCannotMoveEast -> (yAgent'=yAgent+1) & (move'=1) ;
  60. [Agent_move_south] !crashHappened & move=0 & viewAgent=1 & !AgentIsOnSlippery & !AgentCannotMoveSouth -> (xAgent'=xAgent+1) & (move'=1) ;
  61. [Agent_move_west] !crashHappened & move=0 & viewAgent=2 & !AgentIsOnSlippery & !AgentCannotMoveWest -> (yAgent'=yAgent-1) & (move'=1) ;
  62. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=3 & yAgent=11 -> 3/3 : (xAgent'=xAgent-1) & (move'=1) ;
  63. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=3 & yAgent=11 -> 3/3 : (yAgent'=yAgent+1) & (move'=1) ;
  64. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=3 & yAgent=11 -> 2/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent-1) & (move'=1) ;
  65. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=3 & yAgent=11 -> 2/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent+1) & (move'=1) ;
  66. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=4 & yAgent=2 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  67. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=4 & yAgent=2 -> 1/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  68. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=4 & yAgent=2 -> 1/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent+1) & (move'=1) ;
  69. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=4 & yAgent=2 -> 1/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent+1) & (move'=1) ;
  70. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=4 & yAgent=4 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  71. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=4 & yAgent=4 -> 1/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  72. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=4 & yAgent=4 -> 1/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent+1) & (move'=1) ;
  73. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=4 & yAgent=4 -> 1/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent+1) & (move'=1) ;
  74. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=4 & yAgent=5 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  75. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=4 & yAgent=5 -> 1/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  76. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=4 & yAgent=5 -> 1/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent+1) & (move'=1) ;
  77. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=4 & yAgent=5 -> 1/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent+1) & (move'=1) ;
  78. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=4 & yAgent=7 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  79. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=4 & yAgent=7 -> 1/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  80. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=4 & yAgent=7 -> 1/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent+1) & (move'=1) ;
  81. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=4 & yAgent=7 -> 1/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent+1) & (move'=1) ;
  82. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=4 & yAgent=9 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  83. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=4 & yAgent=9 -> 1/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  84. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=4 & yAgent=9 -> 1/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent+1) & (move'=1) ;
  85. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=4 & yAgent=9 -> 1/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent+1) & (move'=1) ;
  86. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=5 & yAgent=10 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  87. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=5 & yAgent=10 -> 1/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  88. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=5 & yAgent=10 -> 1/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent+1) & (move'=1) ;
  89. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=5 & yAgent=10 -> 1/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent+1) & (move'=1) ;
  90. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=6 & yAgent=4 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  91. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=6 & yAgent=4 -> 1/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  92. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=6 & yAgent=4 -> 1/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent+1) & (move'=1) ;
  93. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=6 & yAgent=4 -> 1/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent+1) & (move'=1) ;
  94. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=7 & yAgent=3 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  95. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=7 & yAgent=3 -> 1/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  96. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=7 & yAgent=3 -> 1/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent+1) & (move'=1) ;
  97. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=7 & yAgent=3 -> 1/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent+1) & (move'=1) ;
  98. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=7 & yAgent=6 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  99. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=7 & yAgent=6 -> 1/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  100. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=7 & yAgent=6 -> 1/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent+1) & (move'=1) ;
  101. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=7 & yAgent=6 -> 1/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent+1) & (move'=1) ;
  102. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=7 & yAgent=9 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  103. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=7 & yAgent=9 -> 1/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  104. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=7 & yAgent=9 -> 1/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent+1) & (move'=1) ;
  105. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=7 & yAgent=9 -> 1/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent+1) & (move'=1) ;
  106. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=8 & yAgent=2 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  107. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=8 & yAgent=2 -> 1/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  108. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=8 & yAgent=2 -> 1/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent+1) & (move'=1) ;
  109. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=8 & yAgent=2 -> 1/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent+1) & (move'=1) ;
  110. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=9 & yAgent=4 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  111. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=9 & yAgent=4 -> 2/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  112. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=9 & yAgent=4 -> 3/3 : (xAgent'=xAgent+1) & (move'=1) ;
  113. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=9 & yAgent=4 -> 2/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) & (move'=1) ;
  114. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=9 & yAgent=7 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  115. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=9 & yAgent=7 -> 2/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  116. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=9 & yAgent=7 -> 3/3 : (xAgent'=xAgent+1) & (move'=1) ;
  117. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=9 & yAgent=7 -> 2/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) & (move'=1) ;
  118. [Agentslip_north] !crashHappened & move=0 & viewAgent=3 & xAgent=9 & yAgent=10 -> 1/3 : (xAgent'=xAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent-1) + 1/3: (xAgent'=xAgent-1) & (yAgent'=yAgent+1) & (move'=1) ;
  119. [Agentslip_east] !crashHappened & move=0 & viewAgent=0 & xAgent=9 & yAgent=10 -> 1/3 : (yAgent'=yAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent+1) + 1/3: (yAgent'=yAgent+1) & (xAgent'=xAgent-1) & (move'=1) ;
  120. [Agentslip_south] !crashHappened & move=0 & viewAgent=1 & xAgent=9 & yAgent=10 -> 2/3 : (xAgent'=xAgent+1) + 1/3: (xAgent'=xAgent+1) & (yAgent'=yAgent+1) & (move'=1) ;
  121. [Agentslip_west] !crashHappened & move=0 & viewAgent=2 & xAgent=9 & yAgent=10 -> 2/3 : (yAgent'=yAgent-1) + 1/3: (yAgent'=yAgent-1) & (xAgent'=xAgent-1) & (move'=1) ;
  122. [crashed] move=0 & crashHappened -> true;
  123. endmodule
  124. player Agent
  125. [Agent_move_north], [Agent_move_east], [Agent_move_south], [Agent_move_west], [Agent_turn_left], [Agent_turn_right], [Agentslip_east] , [Agentslip_north], [Agentslip_south], [Agentslip_west], [crashed]
  126. endplayer
  127. module Blue
  128. xBlue : [1..12] init 7;
  129. yBlue : [1..12] init 11;
  130. viewBlue : [0..3] init 1;
  131. [Blue_turn_right] move=1 & true -> (viewBlue'=mod(viewBlue + 1, 4)) & (move'=2) ;
  132. [Blue_turn_left] move=1 & viewBlue>0 -> (viewBlue'=viewBlue - 1) & (move'=2) ;
  133. [Blue_turn_left] move=1 & viewBlue=0 -> (viewBlue'=3) & (move'=2) ;
  134. [Blue_move_north] move=1 & viewBlue=3 & !BlueIsOnSlippery & !BlueCannotMoveNorth -> (xBlue'=xBlue-1) & (move'=2) ;
  135. [Blue_move_east] move=1 & viewBlue=0 & !BlueIsOnSlippery & !BlueCannotMoveEast -> (yBlue'=yBlue+1) & (move'=2) ;
  136. [Blue_move_south] move=1 & viewBlue=1 & !BlueIsOnSlippery & !BlueCannotMoveSouth -> (xBlue'=xBlue+1) & (move'=2) ;
  137. [Blue_move_west] move=1 & viewBlue=2 & !BlueIsOnSlippery & !BlueCannotMoveWest -> (yBlue'=yBlue-1) & (move'=2) ;
  138. [Blueslip_north] move=1 & viewBlue=3 & xBlue=3 & yBlue=11 -> 3/3 : (xBlue'=xBlue-1) & (move'=2) ;
  139. [Blueslip_east] move=1 & viewBlue=0 & xBlue=3 & yBlue=11 -> 3/3 : (yBlue'=yBlue+1) & (move'=2) ;
  140. [Blueslip_south] move=1 & viewBlue=1 & xBlue=3 & yBlue=11 -> 2/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue-1) & (move'=2) ;
  141. [Blueslip_west] move=1 & viewBlue=2 & xBlue=3 & yBlue=11 -> 2/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue+1) & (move'=2) ;
  142. [Blueslip_north] move=1 & viewBlue=3 & xBlue=4 & yBlue=2 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  143. [Blueslip_east] move=1 & viewBlue=0 & xBlue=4 & yBlue=2 -> 1/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  144. [Blueslip_south] move=1 & viewBlue=1 & xBlue=4 & yBlue=2 -> 1/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue+1) & (move'=2) ;
  145. [Blueslip_west] move=1 & viewBlue=2 & xBlue=4 & yBlue=2 -> 1/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue+1) & (move'=2) ;
  146. [Blueslip_north] move=1 & viewBlue=3 & xBlue=4 & yBlue=4 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  147. [Blueslip_east] move=1 & viewBlue=0 & xBlue=4 & yBlue=4 -> 1/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  148. [Blueslip_south] move=1 & viewBlue=1 & xBlue=4 & yBlue=4 -> 1/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue+1) & (move'=2) ;
  149. [Blueslip_west] move=1 & viewBlue=2 & xBlue=4 & yBlue=4 -> 1/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue+1) & (move'=2) ;
  150. [Blueslip_north] move=1 & viewBlue=3 & xBlue=4 & yBlue=5 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  151. [Blueslip_east] move=1 & viewBlue=0 & xBlue=4 & yBlue=5 -> 1/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  152. [Blueslip_south] move=1 & viewBlue=1 & xBlue=4 & yBlue=5 -> 1/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue+1) & (move'=2) ;
  153. [Blueslip_west] move=1 & viewBlue=2 & xBlue=4 & yBlue=5 -> 1/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue+1) & (move'=2) ;
  154. [Blueslip_north] move=1 & viewBlue=3 & xBlue=4 & yBlue=7 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  155. [Blueslip_east] move=1 & viewBlue=0 & xBlue=4 & yBlue=7 -> 1/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  156. [Blueslip_south] move=1 & viewBlue=1 & xBlue=4 & yBlue=7 -> 1/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue+1) & (move'=2) ;
  157. [Blueslip_west] move=1 & viewBlue=2 & xBlue=4 & yBlue=7 -> 1/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue+1) & (move'=2) ;
  158. [Blueslip_north] move=1 & viewBlue=3 & xBlue=4 & yBlue=9 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  159. [Blueslip_east] move=1 & viewBlue=0 & xBlue=4 & yBlue=9 -> 1/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  160. [Blueslip_south] move=1 & viewBlue=1 & xBlue=4 & yBlue=9 -> 1/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue+1) & (move'=2) ;
  161. [Blueslip_west] move=1 & viewBlue=2 & xBlue=4 & yBlue=9 -> 1/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue+1) & (move'=2) ;
  162. [Blueslip_north] move=1 & viewBlue=3 & xBlue=5 & yBlue=10 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  163. [Blueslip_east] move=1 & viewBlue=0 & xBlue=5 & yBlue=10 -> 1/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  164. [Blueslip_south] move=1 & viewBlue=1 & xBlue=5 & yBlue=10 -> 1/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue+1) & (move'=2) ;
  165. [Blueslip_west] move=1 & viewBlue=2 & xBlue=5 & yBlue=10 -> 1/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue+1) & (move'=2) ;
  166. [Blueslip_north] move=1 & viewBlue=3 & xBlue=6 & yBlue=4 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  167. [Blueslip_east] move=1 & viewBlue=0 & xBlue=6 & yBlue=4 -> 1/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  168. [Blueslip_south] move=1 & viewBlue=1 & xBlue=6 & yBlue=4 -> 1/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue+1) & (move'=2) ;
  169. [Blueslip_west] move=1 & viewBlue=2 & xBlue=6 & yBlue=4 -> 1/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue+1) & (move'=2) ;
  170. [Blueslip_north] move=1 & viewBlue=3 & xBlue=7 & yBlue=3 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  171. [Blueslip_east] move=1 & viewBlue=0 & xBlue=7 & yBlue=3 -> 1/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  172. [Blueslip_south] move=1 & viewBlue=1 & xBlue=7 & yBlue=3 -> 1/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue+1) & (move'=2) ;
  173. [Blueslip_west] move=1 & viewBlue=2 & xBlue=7 & yBlue=3 -> 1/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue+1) & (move'=2) ;
  174. [Blueslip_north] move=1 & viewBlue=3 & xBlue=7 & yBlue=6 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  175. [Blueslip_east] move=1 & viewBlue=0 & xBlue=7 & yBlue=6 -> 1/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  176. [Blueslip_south] move=1 & viewBlue=1 & xBlue=7 & yBlue=6 -> 1/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue+1) & (move'=2) ;
  177. [Blueslip_west] move=1 & viewBlue=2 & xBlue=7 & yBlue=6 -> 1/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue+1) & (move'=2) ;
  178. [Blueslip_north] move=1 & viewBlue=3 & xBlue=7 & yBlue=9 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  179. [Blueslip_east] move=1 & viewBlue=0 & xBlue=7 & yBlue=9 -> 1/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  180. [Blueslip_south] move=1 & viewBlue=1 & xBlue=7 & yBlue=9 -> 1/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue+1) & (move'=2) ;
  181. [Blueslip_west] move=1 & viewBlue=2 & xBlue=7 & yBlue=9 -> 1/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue+1) & (move'=2) ;
  182. [Blueslip_north] move=1 & viewBlue=3 & xBlue=8 & yBlue=2 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  183. [Blueslip_east] move=1 & viewBlue=0 & xBlue=8 & yBlue=2 -> 1/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  184. [Blueslip_south] move=1 & viewBlue=1 & xBlue=8 & yBlue=2 -> 1/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue+1) & (move'=2) ;
  185. [Blueslip_west] move=1 & viewBlue=2 & xBlue=8 & yBlue=2 -> 1/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue+1) & (move'=2) ;
  186. [Blueslip_north] move=1 & viewBlue=3 & xBlue=9 & yBlue=4 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  187. [Blueslip_east] move=1 & viewBlue=0 & xBlue=9 & yBlue=4 -> 2/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  188. [Blueslip_south] move=1 & viewBlue=1 & xBlue=9 & yBlue=4 -> 3/3 : (xBlue'=xBlue+1) & (move'=2) ;
  189. [Blueslip_west] move=1 & viewBlue=2 & xBlue=9 & yBlue=4 -> 2/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) & (move'=2) ;
  190. [Blueslip_north] move=1 & viewBlue=3 & xBlue=9 & yBlue=7 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  191. [Blueslip_east] move=1 & viewBlue=0 & xBlue=9 & yBlue=7 -> 2/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  192. [Blueslip_south] move=1 & viewBlue=1 & xBlue=9 & yBlue=7 -> 3/3 : (xBlue'=xBlue+1) & (move'=2) ;
  193. [Blueslip_west] move=1 & viewBlue=2 & xBlue=9 & yBlue=7 -> 2/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) & (move'=2) ;
  194. [Blueslip_north] move=1 & viewBlue=3 & xBlue=9 & yBlue=10 -> 1/3 : (xBlue'=xBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue-1) + 1/3: (xBlue'=xBlue-1) & (yBlue'=yBlue+1) & (move'=2) ;
  195. [Blueslip_east] move=1 & viewBlue=0 & xBlue=9 & yBlue=10 -> 1/3 : (yBlue'=yBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue+1) + 1/3: (yBlue'=yBlue+1) & (xBlue'=xBlue-1) & (move'=2) ;
  196. [Blueslip_south] move=1 & viewBlue=1 & xBlue=9 & yBlue=10 -> 2/3 : (xBlue'=xBlue+1) + 1/3: (xBlue'=xBlue+1) & (yBlue'=yBlue+1) & (move'=2) ;
  197. [Blueslip_west] move=1 & viewBlue=2 & xBlue=9 & yBlue=10 -> 2/3 : (yBlue'=yBlue-1) + 1/3: (yBlue'=yBlue-1) & (xBlue'=xBlue-1) & (move'=2) ;
  198. endmodule
  199. player Blue
  200. [Blue_move_north], [Blue_move_east], [Blue_move_south], [Blue_move_west], [Blue_turn_left], [Blue_turn_right], [Blueslip_east] , [Blueslip_north], [Blueslip_south], [Blueslip_west]
  201. endplayer
  202. module Green
  203. xGreen : [1..12] init 4;
  204. yGreen : [1..12] init 1;
  205. viewGreen : [0..3] init 1;
  206. [Green_turn_right] move=2 & true -> (viewGreen'=mod(viewGreen + 1, 4)) & (move'=0) ;
  207. [Green_turn_left] move=2 & viewGreen>0 -> (viewGreen'=viewGreen - 1) & (move'=0) ;
  208. [Green_turn_left] move=2 & viewGreen=0 -> (viewGreen'=3) & (move'=0) ;
  209. [Green_move_north] move=2 & viewGreen=3 & !GreenIsOnSlippery & !GreenCannotMoveNorth -> (xGreen'=xGreen-1) & (move'=0) ;
  210. [Green_move_east] move=2 & viewGreen=0 & !GreenIsOnSlippery & !GreenCannotMoveEast -> (yGreen'=yGreen+1) & (move'=0) ;
  211. [Green_move_south] move=2 & viewGreen=1 & !GreenIsOnSlippery & !GreenCannotMoveSouth -> (xGreen'=xGreen+1) & (move'=0) ;
  212. [Green_move_west] move=2 & viewGreen=2 & !GreenIsOnSlippery & !GreenCannotMoveWest -> (yGreen'=yGreen-1) & (move'=0) ;
  213. [Greenslip_north] move=2 & viewGreen=3 & xGreen=3 & yGreen=11 -> 3/3 : (xGreen'=xGreen-1) & (move'=0) ;
  214. [Greenslip_east] move=2 & viewGreen=0 & xGreen=3 & yGreen=11 -> 3/3 : (yGreen'=yGreen+1) & (move'=0) ;
  215. [Greenslip_south] move=2 & viewGreen=1 & xGreen=3 & yGreen=11 -> 2/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen-1) & (move'=0) ;
  216. [Greenslip_west] move=2 & viewGreen=2 & xGreen=3 & yGreen=11 -> 2/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen+1) & (move'=0) ;
  217. [Greenslip_north] move=2 & viewGreen=3 & xGreen=4 & yGreen=2 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  218. [Greenslip_east] move=2 & viewGreen=0 & xGreen=4 & yGreen=2 -> 1/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  219. [Greenslip_south] move=2 & viewGreen=1 & xGreen=4 & yGreen=2 -> 1/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen+1) & (move'=0) ;
  220. [Greenslip_west] move=2 & viewGreen=2 & xGreen=4 & yGreen=2 -> 1/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen+1) & (move'=0) ;
  221. [Greenslip_north] move=2 & viewGreen=3 & xGreen=4 & yGreen=4 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  222. [Greenslip_east] move=2 & viewGreen=0 & xGreen=4 & yGreen=4 -> 1/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  223. [Greenslip_south] move=2 & viewGreen=1 & xGreen=4 & yGreen=4 -> 1/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen+1) & (move'=0) ;
  224. [Greenslip_west] move=2 & viewGreen=2 & xGreen=4 & yGreen=4 -> 1/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen+1) & (move'=0) ;
  225. [Greenslip_north] move=2 & viewGreen=3 & xGreen=4 & yGreen=5 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  226. [Greenslip_east] move=2 & viewGreen=0 & xGreen=4 & yGreen=5 -> 1/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  227. [Greenslip_south] move=2 & viewGreen=1 & xGreen=4 & yGreen=5 -> 1/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen+1) & (move'=0) ;
  228. [Greenslip_west] move=2 & viewGreen=2 & xGreen=4 & yGreen=5 -> 1/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen+1) & (move'=0) ;
  229. [Greenslip_north] move=2 & viewGreen=3 & xGreen=4 & yGreen=7 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  230. [Greenslip_east] move=2 & viewGreen=0 & xGreen=4 & yGreen=7 -> 1/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  231. [Greenslip_south] move=2 & viewGreen=1 & xGreen=4 & yGreen=7 -> 1/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen+1) & (move'=0) ;
  232. [Greenslip_west] move=2 & viewGreen=2 & xGreen=4 & yGreen=7 -> 1/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen+1) & (move'=0) ;
  233. [Greenslip_north] move=2 & viewGreen=3 & xGreen=4 & yGreen=9 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  234. [Greenslip_east] move=2 & viewGreen=0 & xGreen=4 & yGreen=9 -> 1/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  235. [Greenslip_south] move=2 & viewGreen=1 & xGreen=4 & yGreen=9 -> 1/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen+1) & (move'=0) ;
  236. [Greenslip_west] move=2 & viewGreen=2 & xGreen=4 & yGreen=9 -> 1/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen+1) & (move'=0) ;
  237. [Greenslip_north] move=2 & viewGreen=3 & xGreen=5 & yGreen=10 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  238. [Greenslip_east] move=2 & viewGreen=0 & xGreen=5 & yGreen=10 -> 1/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  239. [Greenslip_south] move=2 & viewGreen=1 & xGreen=5 & yGreen=10 -> 1/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen+1) & (move'=0) ;
  240. [Greenslip_west] move=2 & viewGreen=2 & xGreen=5 & yGreen=10 -> 1/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen+1) & (move'=0) ;
  241. [Greenslip_north] move=2 & viewGreen=3 & xGreen=6 & yGreen=4 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  242. [Greenslip_east] move=2 & viewGreen=0 & xGreen=6 & yGreen=4 -> 1/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  243. [Greenslip_south] move=2 & viewGreen=1 & xGreen=6 & yGreen=4 -> 1/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen+1) & (move'=0) ;
  244. [Greenslip_west] move=2 & viewGreen=2 & xGreen=6 & yGreen=4 -> 1/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen+1) & (move'=0) ;
  245. [Greenslip_north] move=2 & viewGreen=3 & xGreen=7 & yGreen=3 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  246. [Greenslip_east] move=2 & viewGreen=0 & xGreen=7 & yGreen=3 -> 1/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  247. [Greenslip_south] move=2 & viewGreen=1 & xGreen=7 & yGreen=3 -> 1/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen+1) & (move'=0) ;
  248. [Greenslip_west] move=2 & viewGreen=2 & xGreen=7 & yGreen=3 -> 1/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen+1) & (move'=0) ;
  249. [Greenslip_north] move=2 & viewGreen=3 & xGreen=7 & yGreen=6 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  250. [Greenslip_east] move=2 & viewGreen=0 & xGreen=7 & yGreen=6 -> 1/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  251. [Greenslip_south] move=2 & viewGreen=1 & xGreen=7 & yGreen=6 -> 1/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen+1) & (move'=0) ;
  252. [Greenslip_west] move=2 & viewGreen=2 & xGreen=7 & yGreen=6 -> 1/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen+1) & (move'=0) ;
  253. [Greenslip_north] move=2 & viewGreen=3 & xGreen=7 & yGreen=9 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  254. [Greenslip_east] move=2 & viewGreen=0 & xGreen=7 & yGreen=9 -> 1/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  255. [Greenslip_south] move=2 & viewGreen=1 & xGreen=7 & yGreen=9 -> 1/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen+1) & (move'=0) ;
  256. [Greenslip_west] move=2 & viewGreen=2 & xGreen=7 & yGreen=9 -> 1/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen+1) & (move'=0) ;
  257. [Greenslip_north] move=2 & viewGreen=3 & xGreen=8 & yGreen=2 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  258. [Greenslip_east] move=2 & viewGreen=0 & xGreen=8 & yGreen=2 -> 1/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  259. [Greenslip_south] move=2 & viewGreen=1 & xGreen=8 & yGreen=2 -> 1/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen+1) & (move'=0) ;
  260. [Greenslip_west] move=2 & viewGreen=2 & xGreen=8 & yGreen=2 -> 1/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen+1) & (move'=0) ;
  261. [Greenslip_north] move=2 & viewGreen=3 & xGreen=9 & yGreen=4 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  262. [Greenslip_east] move=2 & viewGreen=0 & xGreen=9 & yGreen=4 -> 2/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  263. [Greenslip_south] move=2 & viewGreen=1 & xGreen=9 & yGreen=4 -> 3/3 : (xGreen'=xGreen+1) & (move'=0) ;
  264. [Greenslip_west] move=2 & viewGreen=2 & xGreen=9 & yGreen=4 -> 2/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) & (move'=0) ;
  265. [Greenslip_north] move=2 & viewGreen=3 & xGreen=9 & yGreen=7 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  266. [Greenslip_east] move=2 & viewGreen=0 & xGreen=9 & yGreen=7 -> 2/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  267. [Greenslip_south] move=2 & viewGreen=1 & xGreen=9 & yGreen=7 -> 3/3 : (xGreen'=xGreen+1) & (move'=0) ;
  268. [Greenslip_west] move=2 & viewGreen=2 & xGreen=9 & yGreen=7 -> 2/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) & (move'=0) ;
  269. [Greenslip_north] move=2 & viewGreen=3 & xGreen=9 & yGreen=10 -> 1/3 : (xGreen'=xGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen-1) + 1/3: (xGreen'=xGreen-1) & (yGreen'=yGreen+1) & (move'=0) ;
  270. [Greenslip_east] move=2 & viewGreen=0 & xGreen=9 & yGreen=10 -> 1/3 : (yGreen'=yGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen+1) + 1/3: (yGreen'=yGreen+1) & (xGreen'=xGreen-1) & (move'=0) ;
  271. [Greenslip_south] move=2 & viewGreen=1 & xGreen=9 & yGreen=10 -> 2/3 : (xGreen'=xGreen+1) + 1/3: (xGreen'=xGreen+1) & (yGreen'=yGreen+1) & (move'=0) ;
  272. [Greenslip_west] move=2 & viewGreen=2 & xGreen=9 & yGreen=10 -> 2/3 : (yGreen'=yGreen-1) + 1/3: (yGreen'=yGreen-1) & (xGreen'=xGreen-1) & (move'=0) ;
  273. endmodule
  274. player Green
  275. [Green_move_north], [Green_move_east], [Green_move_south], [Green_move_west], [Green_turn_left], [Green_turn_right], [Greenslip_east] , [Greenslip_north], [Greenslip_south], [Greenslip_west]
  276. endplayer