I ran into this algorithm and want to know more about it's mathematical properties.

It's an algorithm that allows you to do highly complex transforms of multivariate systems using arbitrary functions...but the transform is always invertible! A possible use case is e.g. to learn a function that maps complex empirical distributions into easy to sample distributions (gaussian, uniform), the inverse of which can be used to generate new samples from the empirical distribution.

Below you see an example of the forward and back transform. There is a conceptual link with copula's, but can copula's do things like this?

It goes like this: we have a D dimensional variable, [$]\overline{x} = \{x_1, x_2, ... x_D\}[$], select a subset of coordinates that don't change, i.e. [$]y_1 = x_1, y_2 = x_2,.. y_d = x_d[$], the remainder coordinates you can transform using any type of function depending on the unchanged coordinates, in particular you can use non-invertible ones, e.g. like f(a) = sin(a^2)

Forward transform

[$]

\begin{align}

y_1 &= x_1 \\

y_2 &= x_2 \\

&... \\

y_d &= x_d \\

y_{d+1} &= x_{d+1} + f(x_1, x_2,.. x_d) \\

y_{d+2} &= x_{d+2} + g(x_1, x_2,.. x_d) \\

&...

\end{align}

[$]

The tricks are now it that

1) you can back transform like this

[$]

\begin{align}

x_1 &= y_1 \\

x_2 &= y_2 \\

&... \\

x_d &= y_d \\

x_{d+1} &= y_{d+1} - f(y_1, y_2,.. y_d) \\

x_{d+2} &= y_{d+2} - g(y_1, y_2,.. y_d) \\

&...

\end{align}

[$]

2) and you can repeatedly select subset of coordinates and stack transforms on transform to create highly complicated transforms on all coordinates.

Is there a name for this? What limitations does this have if you compare it to general invertible mappings (are there some invertible mapping it can't do)?