3.7 Problem: Towers of Hanoi

Implement a solver for Tower of Hanoi as a reduction relation, where a step by the reduction corresponds to a move in the game. You can implement the solver as an exploration of all possible game moves via the reduction relation, checking whether a solution state is reachable.

Hints While you can implement the game using just define-language and reduction-relation, a metafunction that checks whether a stack of ties will “accept” a given additional tile makes the reduction easier to write. Among the possible choices for representing a tile, a list of s works well and looks nice.