MODULE main VAR ferryman : boolean; goat : boolean; cabbage : boolean; wolf : boolean; carry : {g, c, w, 0}; ASSIGN init(ferryman) := 0; init(goat) := 0; init(cabbage) := 0; init(wolf) := 0; init(carry) := 0; next(ferryman) := !
Category:
move(state(X,W,X,C), state(Y,W,Y,C)):- opp(X,Y), not(unsafe(state(Y,W,Y,C))), writelist(['try farmer takes goat ', Y, W, Y, C]), nl. move(state(X,W,G,X), state(Y,W,G,Y)):- opp(X,Y), not(unsafe(state(Y,W,G,Y))), writelist(['try farmer takes cabbage ', Y, W, G, Y]), nl.
Category: