Module type Solver.S

module type S = functor (Puzzle : PUZZLE) -> sig .. end
Signature of the functors Solver.Make and Solver.MakeUnguided
Parameters:
Puzzle : PUZZLE

val solve : Puzzle.state -> Puzzle.move list option
Given an initial state s, output a sequence [m1; m2; ...] that when applied to s in order, produces a goal state.

Returns None if there is no path to a goal.