replacing equiv() with new implementation that is based on canonical representations of types
replacing equiv() with new implementation that is based on canonical representation of types