refactored the visitor to integrate it to the monad transformer
framework
Changed the visitor design to use monad transformers. Preparing for the
addition of a data structure to record the structure of progress proof
in order to check for cycles.