() << std::endl;
std::cout << P() << std::endl;
std::cout << P() << std::endl;
std::cout << P() << std::endl;
#define COMPOSE(P1,P2)\
std::cout << " composing " << P() << " and "<< P() << " = "<< P() << std::endl ;
#define INVERSE(P1)\
std::cout << "inverse of "<< P() << " = "<< P() << std::endl;\
std::cout << " checking "<< P() << std::endl;
COMPOSE(p,p);
COMPOSE(p2,p2);
INVERSE(p);
INVERSE(p2);
INVERSE(pc);
#define ID(n)\
std::cout << " identity :" << P() << std::endl ;\
std::cout << " ridentity :" << P() << std::endl<