In older literature (into the 20th century, especially in analysis), functions were often considered to be multi-valued by default, requiring one to specify a singe-valued function otherwise. As set-theoretic formalisation spread, this intuition became difficult to maintain, and the modern concept of function must be single-valued. If you want multi-valued functions, then you can get them in terms of single-valued functions as below.
We will call and the source and target of as usual; then we call the domain of and the projection of the domain onto the source. By abuse of notation, the multi-valued function is conflated with the (single-valued) function .
Often one can assume that the induced function is an injection; in that case, a multi-valued function is the same as an entire relation. On the other hand, if you're considering all of the multi-valued functions for a given , then this restriction is not really appropriate.
We consider two multi-valued functions (with the same given source and target) to be equal if there is a bijection between their domains that makes the obvious diagrams commute.
In 19th-century analysis, one considered the square-root function, the logarithm, and so forth to be multi-valued functions of complex numbers. We now understand this in terms of Riemann surfaces; the domain above is a Riemann surface. (Notice that the logarithm is actually a multi-valued partial function from to , although it is a multi-valued total function on .)