added type signatures to some modules
o Separated the operator module into two modules: operator and oldoperator. The latter is only used for testing and it should not be confused with actual functionality
o improved the compilation tool
o introduced a new Tactic monad to build proof tactics
o used the Tactic monad to formulate the indirect equality proof technique.
added the hypothesis instantiation tactic in order to support the indirect equality tactic