//
// WGWGWGWGWGWGWGWGWGWGWGWGWG
// WGXR                    WG
// WG  WGWGWGWGWGWGWGWGWG  WG
// WG                    SBWG
// WGZGSB  SBSB  SB  SB    WG
// WG                  SB  WG
// WG      SB              WG
// WG    SB    SB    SB  ZBWG
// WG  SB                  WG
// WG      SB    SB    SB  WG
// WG  WGWGWGWGWGWGWGWGWG  WG
// WG                    GRWG
// WGWGWGWGWGWGWGWGWGWGWGWGWG
//
// A string representation of a farama minigrid (https://minigrid.farama.org/) with
// an agent (XR) and adversaries (ZG, ZB).
//
// The agent has to move to its goal (GR) while avoiding the adversaries. The agent experiences a stochastic update on a slippery tile (SB).

smg


global move : [0..2] init 0;

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);
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);
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);
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);
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);
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);
label AgentOnRed = (xAgent=1&yAgent=4) | (xAgent=1&yAgent=5);
label BlueOnRed = (xBlue=1&yBlue=4) | (xBlue=1&yBlue=5);
label GreenOnRed = (xGreen=1&yGreen=4) | (xGreen=1&yGreen=5);
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);
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);
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);
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);
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);

label AgentGoal = (xAgent=11&yAgent=11);
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);
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);
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);
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);
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);

label BlueGoal = (xBlue=11&yBlue=11);
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);
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);
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);
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);
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);

label GreenGoal = (xGreen=11&yGreen=11);
label crash = (xAgent=xBlue)&(yAgent=yBlue) | (xAgent=xGreen)&(yAgent=yGreen);

formula crashHappened = (xAgent=xBlue)&(yAgent=yBlue) | (xAgent=xGreen)&(yAgent=yGreen);
module Agent
	xAgent : [1..12] init 1;
	yAgent : [1..12] init 1;

	viewAgent : [0..3] init 1;

	[Agent_turn_right] !crashHappened & move=0 &  true -> (viewAgent'=mod(viewAgent + 1, 4))  & (move'=1) ;
	[Agent_turn_left]  !crashHappened & move=0 &  viewAgent>0 -> (viewAgent'=viewAgent - 1)  & (move'=1) ;
	[Agent_turn_left]  !crashHappened & move=0 &  viewAgent=0 -> (viewAgent'=3)  & (move'=1) ;


	[Agent_move_north] !crashHappened & move=0 &  viewAgent=3 &  !AgentIsOnSlippery & !AgentCannotMoveNorth -> (xAgent'=xAgent-1) & (move'=1) ;
	[Agent_move_east]  !crashHappened & move=0 &  viewAgent=0 &  !AgentIsOnSlippery & !AgentCannotMoveEast  -> (yAgent'=yAgent+1) & (move'=1) ;
	[Agent_move_south] !crashHappened & move=0 &  viewAgent=1 &  !AgentIsOnSlippery & !AgentCannotMoveSouth -> (xAgent'=xAgent+1) & (move'=1) ;
	[Agent_move_west]  !crashHappened & move=0 &  viewAgent=2 &  !AgentIsOnSlippery & !AgentCannotMoveWest  -> (yAgent'=yAgent-1) & (move'=1) ;

	[Agentslip_north] !crashHappened & move=0 &  viewAgent=3 & xAgent=3 & yAgent=11 -> 3/3 : (xAgent'=xAgent-1) & (move'=1) ;
	[Agentslip_east]  !crashHappened & move=0 &   viewAgent=0 & xAgent=3 & yAgent=11 -> 3/3 : (yAgent'=yAgent+1) & (move'=1) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[Agentslip_south] !crashHappened & move=0 &  viewAgent=1 & xAgent=9 & yAgent=4 -> 3/3 : (xAgent'=xAgent+1) & (move'=1) ;
	[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) ;
	[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) ;
	[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) ;
	[Agentslip_south] !crashHappened & move=0 &  viewAgent=1 & xAgent=9 & yAgent=7 -> 3/3 : (xAgent'=xAgent+1) & (move'=1) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;

  [crashed] move=0 & crashHappened -> true;
endmodule

player Agent
	[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]
endplayer
module Blue
	xBlue : [1..12] init 7;
	yBlue : [1..12] init 11;

	viewBlue : [0..3] init 1;

	[Blue_turn_right]  move=1 &  true -> (viewBlue'=mod(viewBlue + 1, 4))  & (move'=2) ;
	[Blue_turn_left]   move=1 &  viewBlue>0 -> (viewBlue'=viewBlue - 1)  & (move'=2) ;
	[Blue_turn_left]   move=1 &  viewBlue=0 -> (viewBlue'=3)  & (move'=2) ;


	[Blue_move_north] move=1 &  viewBlue=3 &  !BlueIsOnSlippery & !BlueCannotMoveNorth -> (xBlue'=xBlue-1) & (move'=2) ;
	[Blue_move_east]  move=1 &  viewBlue=0 &  !BlueIsOnSlippery & !BlueCannotMoveEast  -> (yBlue'=yBlue+1) & (move'=2) ;
	[Blue_move_south] move=1 &  viewBlue=1 &  !BlueIsOnSlippery & !BlueCannotMoveSouth -> (xBlue'=xBlue+1) & (move'=2) ;
	[Blue_move_west]  move=1 &  viewBlue=2 &  !BlueIsOnSlippery & !BlueCannotMoveWest  -> (yBlue'=yBlue-1) & (move'=2) ;

	[Blueslip_north] move=1 &  viewBlue=3 & xBlue=3 & yBlue=11 -> 3/3 : (xBlue'=xBlue-1) & (move'=2) ;
	[Blueslip_east]  move=1 &   viewBlue=0 & xBlue=3 & yBlue=11 -> 3/3 : (yBlue'=yBlue+1) & (move'=2) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[Blueslip_south] move=1 &  viewBlue=1 & xBlue=9 & yBlue=4 -> 3/3 : (xBlue'=xBlue+1) & (move'=2) ;
	[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) ;
	[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) ;
	[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) ;
	[Blueslip_south] move=1 &  viewBlue=1 & xBlue=9 & yBlue=7 -> 3/3 : (xBlue'=xBlue+1) & (move'=2) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
endmodule

player Blue
	[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]
endplayer
module Green
	xGreen : [1..12] init 4;
	yGreen : [1..12] init 1;

	viewGreen : [0..3] init 1;

	[Green_turn_right]  move=2 &  true -> (viewGreen'=mod(viewGreen + 1, 4))  & (move'=0) ;
	[Green_turn_left]   move=2 &  viewGreen>0 -> (viewGreen'=viewGreen - 1)  & (move'=0) ;
	[Green_turn_left]   move=2 &  viewGreen=0 -> (viewGreen'=3)  & (move'=0) ;


	[Green_move_north] move=2 &  viewGreen=3 &  !GreenIsOnSlippery & !GreenCannotMoveNorth -> (xGreen'=xGreen-1) & (move'=0) ;
	[Green_move_east]  move=2 &  viewGreen=0 &  !GreenIsOnSlippery & !GreenCannotMoveEast  -> (yGreen'=yGreen+1) & (move'=0) ;
	[Green_move_south] move=2 &  viewGreen=1 &  !GreenIsOnSlippery & !GreenCannotMoveSouth -> (xGreen'=xGreen+1) & (move'=0) ;
	[Green_move_west]  move=2 &  viewGreen=2 &  !GreenIsOnSlippery & !GreenCannotMoveWest  -> (yGreen'=yGreen-1) & (move'=0) ;

	[Greenslip_north] move=2 &  viewGreen=3 & xGreen=3 & yGreen=11 -> 3/3 : (xGreen'=xGreen-1) & (move'=0) ;
	[Greenslip_east]  move=2 &   viewGreen=0 & xGreen=3 & yGreen=11 -> 3/3 : (yGreen'=yGreen+1) & (move'=0) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[Greenslip_south] move=2 &  viewGreen=1 & xGreen=9 & yGreen=4 -> 3/3 : (xGreen'=xGreen+1) & (move'=0) ;
	[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) ;
	[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) ;
	[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) ;
	[Greenslip_south] move=2 &  viewGreen=1 & xGreen=9 & yGreen=7 -> 3/3 : (xGreen'=xGreen+1) & (move'=0) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
	[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) ;
endmodule

player Green
	[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]
endplayer