Generic Theorem Proving Using HOL2P: A Category Theory Inspired Approach