As of January 2024 ProB has a built-in algorithm for Monte Carlo Tree Search (MCTS). This can for example be used to perform game playing.
In order to make use of MCTS one needs to provide information about the game state of a model by providing DEFINITIONS for:
The following definitions are optional and influence the MCTS algorithm:
A simple example is the Nim game of sticks:
MACHINE Nim_MCTS CONSTANTS Players, other PROPERTIES Players = {"min","max"} & other = {"min"|->"max", "max"|->"min"} DEFINITIONS GAME_OVER == bool(sticks < 1); GAME_VALUE == {"max"|->1, "min"|->-1}(player); GAME_PLAYER == player; GAME_MCTS_RUNS == 100 VARIABLES sticks, player INVARIANT sticks:NATURAL & player:Players INITIALISATION sticks := 5 || player := "max" OPERATIONS Take1 = SELECT sticks>=1 THEN sticks := sticks-1 || player := other(player) END; Take2 = SELECT sticks>=2 THEN sticks := sticks-2 || player := other(player) END END