## Parameters

`module G : G`
`module P : PLAYER with type vertex = G.vertex`
`module S : STRAT with type vertex = G.vertex`

## Signature

`val coherent_player : 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 : 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 : 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 : 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 : 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.