module type PUZZLE =sig..end
include Solver.PUZZLE
type animstate 
val init : state -> animstateval render : animstate -> state -> (float * move) option -> unitrender astate state (Some(percent, move))
      draws the given state of the puzzle on the window defined by astate,
      with move partially applied.  percent is a number between 0. and
      1. that determines how much move is applied.
      render astate state None simply renders state without any move applied.
      It is the same as render astate state (Some(0.,m)).