# 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.