# Functor Strat.Algo

`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
Parameters:
 `G` : `G` `P` : `PLAYER with type vertex = G.vertex` `S` : `STRAT with type vertex = G.vertex`

`val coherent_player : `Strat.G.t -> P.t -> bool``
`coherent_player g p` returns `true` iff the completion `p` is coherent w.r.t. the graph g
`val coherent_strat : `Strat.G.t -> S.t -> bool``
`coherent_strat g s` returns `true` iff the strategy `s` is coherent w.r.t. the graph `g`
`val game : `Strat.G.t -> P.t -> S.t -> S.t -> bool``
`game g p a b` returns `true` iff `a` wins in `g` given the completion `p` (i.e. the game goes through a final state).
`val strategy : `Strat.G.t -> P.t -> S.t -> bool``
`strategy g p s` returns `true` iff `s` wins in `g` given the completion `p`, whatever strategy plays the other player.
`val strategyA : `Strat.G.t -> P.t -> bool * S.t``
`strategyA g p` returns `true` iff there exists `a` winning stragegy for the true player. In this case, the winning strategy is provided.