# Module Strat

`module Strat: `sig` .. `end``
Strategies

Implementation of a winning strategy of a graph: the graph represents a two players game, each vertex belongs to either player (whose turn it is to play) and describes a configuration of the game. The algorithm computes the winning strategy of a player, if any; i.e. the moves to play (which vertex to go to) so that for all possible moves of the other player, the game goes through a final state.
Author(s): Nicolas Ayache

`module type G = `sig` .. `end``
Signature for graphs
`module type PLAYER = `sig` .. `end``
Signature for graph add-ons: an initial vertex, final vertices and membership of vertices to either true or false, i.e.
`module type STRAT = `sig` .. `end``
Signature for strategies: for a given state, the strategy tells which state to go to
`module Algo: `functor (``G`` : ``G``) -> ``functor (``P`` : ``PLAYER``  with type vertex = G.vertex``) -> ``functor (``S`` : ``STRAT``  with type vertex = G.vertex``) -> ``sig` .. `end``
Implements strategy algorithms on graphs