Change elaboration to use a writer monad over the constraints.
Use GR for testing