The function, z^{m/n}, is a power function. +1 for its definition. But as I understood, the OP is interested in the exponential function, f(z)=a^z, a\in\mathbb{C}\setminus\{0\}, which is defined by f(z)=exp(z*log(a)).
While z^{m/n} is multivaluated, the exponential function, f(z)=a^z, is a univaluated function, because in its definition one takes a fixed branch of logarithm.

I’m guessing mkitti is imagining lazier types to represent an output of multivalued functions, so they can compose with existing functions. Just like how we need to do sqrt(Complex(-4)) to avoid a type-stability-preserving DomainError, we probably need convert inputs before passing into functions. Not sure if one Multivalues type can do it for outputs of all multivalued functions, my naive thought is that ±2 would look very different from an infinite set of complex numbers.

The equivalence class is represented by a polynomial (equation), whose roots are the elements of the equivalence class. You could use PolynomialRoots.jl (warning, it’s buggy) or AMRVW.jl to find the roots of the polynomial.

For example, given multivalued x = {a^{\frac{m}{n}}}, you want the roots of {x^n} - {a^m}. If the polynomial is just {x^e} - c, you can use Mason’s method for calculating all the roots, instead of reaching out for one of the above packages.