SlowGuess/NeurIPS_2023_OCR huggingface dataset:
that we can once again compactly write as a series of linear operations  $\mathbf{x} = G_3(G_2(G_1\mathbf{u}))$ . Note that the matrices  $G_{1},G_{2},G_{3}$  are not unique, and that they are valid as long as they are at most as sparse as  $G$ , and produce the same final output.
Compacted SCM Another natural step here is to compress this sequence of linear equations into a single operation. That is, use directly the linear operation described at the end of Eq. 17:
$$
\left\{ \begin{array}{l} \mathrm {x} _ {1} = \mathrm {u} _ {1} \\ \mathrm {x} _ {2} = 2 \mathrm {u} _ {1} + \mathrm {u} _ {2} \\ \mathrm {x} _ {3} = 6 \mathrm {u} _ {1} + 3 \mathrm {u} _ {2} + \mathrm {u} _ {3} \end{array} . \right. \tag {19}
$$
And we can derive the same result in vectorial form:
$$
\begin{array}{l} \mathbf {x} = G \mathbf {x} + I \mathbf {u} \Rightarrow \mathbf {x} = G (G \mathbf {x} + I \mathbf {u}) + I \mathbf {u} \Rightarrow \mathbf {x} = G (G (G \mathbf {x} + I \mathbf {u}) + I \mathbf {u}) + I \mathbf {u} \Rightarrow \\ \mathbf {x} = G ^ {\beta} \mathbf {x} + G ^ {2} \mathbf {u} + G \mathbf {u} + I \mathbf {u} = (G ^ {2} + G + I) \mathbf {u}. \\ \end{array}
$$
Unfortunately, as described in §4, in this form we cannot longer distinguish indirect paths: we have collapsed all paths into direct paths. Even worse, if there were more than one path between two given nodes, we have combined their contributions into a single path, making it quite difficult to disentangle. This effect can be seen as analogous to the common process in cryptography for sharing secrets: if you have two primes (paths), it is fairly easy to multiply them and obtain their product, but if you have their product (collapsed paths), performing prime factorization of the number is prohibitive.
Inverted SCM Finally, we can take any of these different representations and invert the equations to go from  $\mathbf{x}$  to  $\mathbf{u}$ . In this case, it is easier to work with the original equations:
$$
\left\{ \begin{array}{l} \mathrm {x} _ {1} = \mathrm {u} _ {1} \\ \mathrm {x} _ {2} = 2 \mathrm {x} _ {1} + \mathrm {u} _ {2} \\ \mathrm {x} _ {3} = 3 \mathrm {x} _ {2} + \mathrm {u} _ {3} \end{array} \right. \Rightarrow \left\{ \begin{array}{l} \mathrm {u} _ {1} = \mathrm {x} _ {1} \\ \mathrm {u} _ {2} = \mathrm {x} _ {2} - 2 \mathrm {x} _ {1} \\ \mathrm {u} _ {3} = \mathrm {x} _ {3} - 3 \mathrm {x} _ {2} \end{array} , \right. \tag {20}
$$
and, in vectorial form:
$$
\mathbf {x} = G \mathbf {x} + I \mathbf {u} \Rightarrow \mathbf {u} = (I - G) \mathbf {x}. \tag {21}
$$
As discussed in the main manuscript, this turns out to be a really convenient SCM representation to work with, as we can obtain the exogenous variables in one go while being causally consistent.
B.2 Non-linear SCM representations
In this section, we discuss how the same representation and reasoning about the causal relationships of a linear SCM from App. B.1 can be to the general case.
To this end, assume that we have a non-linear SCM  $\mathcal{M}$  of the form  $\mathbf{x} = \widetilde{\mathbf{f}} (\mathbf{x},\mathbf{u})$  where, to ease the reader, imagine that it has the same causal graph as the linear example, so that the reader can use Fig. 8 as a reference again, i.e., assume that
$$
\left(\nabla_ {\mathbf {x}} \tilde {\mathbf {f}} (\mathbf {x}, \mathbf {u}) \neq \mathbf {0}\right) = \left( \begin{array}{l l l} 0 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{array} \right) \quad \text {a n d} \quad \left(\nabla_ {\mathbf {u}} \tilde {\mathbf {f}} (\mathbf {x}, \mathbf {u}) \neq \mathbf {0}\right) = \left( \begin{array}{l l l} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right), \tag {22}
$$
where  $\mathbf{0}$  is the constant zero function with the same domain and codomain as the Jacobian matrices.
Recursive SCM Already extensively discussed. This is the representation an SCM is given as.
Unrolled SCM Just as before, we can unroll the equations by having multiple functions  $\mathbf{z}^l = \mathbf{f}_l(\mathbf{z}^{l-1})$ , and in each one we unroll those equations for which we already know the non-recursive equation of its parents, leaving all the other fixed (identity functions). As before, we can write these multiple layers in different ways, as long as they produce the same final function (after composing them,  $\mathbf{f}_1 \circ \mathbf{f}_2 \circ \dots \circ \mathbf{f}_L = \mathbf{f}$ ), and that they respect the causal dependencies provided by  $I + A$ . This is similar to the linear example, and what we used to design the generative model in Eq. 5 of §4.
Collapsed SCM Just as before, we can expand all the different layers and write a (probably complex) formula that encompasses all changes in a single step. It is easy to show that the composition of these functions has, in general, a Jacobian matrix structurally equivalent to  $I + \sum_{l}^{\mathrm{diam}(A)} A^{l}$ . Specifically, their composition will be of the form  $\prod_{l} (I + A)$ .
Reverse SCM Since we assume that each  $\tilde{f}_i(\mathbf{x}_{\mathrm{pa}_i},\mathbf{u}_i)$  is bijective with respect to  $\mathbf{u}_i$ , we can always compute its inverse to obtain  $\mathbf{u}_i$  as a function of the observed values,  $\mathbf{u}_i = \tilde{f}_i^{-1}(\mathbf{x}_{\mathrm{pa}_i},\mathbf{x}_i)$ . Clearly, its Jacobian matrix will be structurally equivalent to  $\boldsymbol {I} + \boldsymbol {A}\equiv \boldsymbol {I} - \boldsymbol{A}$ .
Therefore, we can always reason as we did with the linear case, but using Jacobian matrices to talk about causal dependencies between variables, and possibly having a complex and/or non-closed formulation of the generative/abductive functions.
C Do-operator: interventions and counterfactuals
C.1 Definition and algorithms
In this section, we extend on the do-operator implementation described in §5, and provide the step-by-step algorithms to perform interventions (Alg. 1) and compute counterfactuals (Alg. 2).
Semantics Recalling §5, the do-operator [30], denoted as  $\text{do}(\mathbf{x}_i = \alpha)$ , is defined as a mathematical operator that simulates a physical intervention on an SCM  $\mathcal{M}$ , inducing an alternative model  $\mathcal{M}^{\mathcal{I}}$  that fixes the observational value  $\mathbf{x}_i = \alpha$ , and thus removes any causal dependency on  $\mathbf{x}_i$ . However, the definition does not describe the specifics on how to implement such an operation.
Usual implementation Traditionally, we are given the recursive representation of an SCM (Fig. 8a), as discussed in App. B. As such, the do-operator  $do(\mathbf{x}_i = \alpha)$  is usually carried out by replacing the  $i$ -th equation, i.e., the  $i$ -th component of  $\tilde{\mathbf{f}}$ , with a constant function. That is, by doing  $\tilde{f}_i^{\mathcal{I}} := \alpha$ . This yields an intervened SCM  $\mathcal{M}^{\mathcal{I}} = (\tilde{\mathbf{f}}^{\mathcal{I}}, P_{\mathbf{u}})$  reflecting the data-generating process after such an intervention. Unfortunately, this implementation of the do-operator is quite specific to the recursive representation of the SCM (Fig. 4a), and does not translate well to the other equivalent representations discussed in §4 and App. B. The reason for this is that these representations compute the observational values  $\mathbf{x}$  as a vector function of  $\mathbf{u}$ , without the iterative sampling process that goes through the intervened value that we replace. The only exception is the abductive model with knowledge on the causal graph and  $L = 1$  (see §4), as it corresponds to the exact same case of Fig. 8d. If we have  $L > 1$  however, whether this implementation works or not comes down to the specific implementation to compute the inverse of the network.
Proposed implementation As discussed in §4, we instead propose to manipulate the SCM by modifying the exogenous distribution  $P_{\mathbf{u}}$ , while keeping the causal generator  $\tilde{\mathbf{f}}$  untouched. Specifically, an intervention  $do(\mathbf{x}_i = \alpha)$  updates  $P_{\mathbf{u}}$ , to have positive density mass on only those values that, when transformed to endogenous variables, the intervened variable yields the intervened value,  $\mathbf{x}_i = \alpha$ , while keeping the rest of distributions unaltered.
In other words, we define the intervened SCM as  $\mathcal{M}^{\mathcal{I}} = (\tilde{\mathbf{f}}, P_{\mathbf{u}}^{\mathcal{I}})$ , where the density of the updated distribution  $P_{\mathbf{u}}^{\mathcal{I}}$  is of the form
$$
p ^ {\mathcal {I}} (\mathbf {u}) \propto p (\mathbf {u}) \cdot \delta_ {\left\{\tilde {\mathbf {f}} _ {i} (\boldsymbol {x}, \mathbf {u}) = \alpha \right\}} (\mathbf {u}), \tag {23}
$$
and where the distributions of the rest of variables remain the same. Using the acyclic assumption, we know that the only way of altering the value of  $\mathbf{x}_i$  without altering those of its parents is through  $\mathbf{u}_i$  and, using the causal sufficiency assumption, we can squeeze the Dirac delta directly in the distribution of the  $i$ -th exogenous variable, such that:
$$
p ^ {\mathcal {I}} (\mathbf {u}) = p _ {i} ^ {\mathcal {I}} \left(\mathbf {u} _ {i} \mid \mathbf {u} _ {j \neq i}\right) \cdot \prod_ {j \neq i} p _ {j} \left(\mathbf {u} _ {j}\right), \quad \text {w i t h} \quad p _ {i} ^ {\mathcal {I}} \left(\mathbf {u} _ {i} \mid \mathbf {u} _ {j \neq i}\right) \propto p _ {i} \left(\mathbf {u} _ {i}\right) \cdot \delta_ {\left\{\tilde {\mathbf {f}} _ {i} (\boldsymbol {x}, \mathbf {u}) = \alpha \right\}} (\mathbf {u}). \tag {24}
$$
In the case we consider, where all the generators are bijective given the parent nodes, the set  $\delta_{\{\tilde{\mathbf{f}}_i(\mathbf{x},\mathbf{u}) = \alpha \}}(\mathbf{u})$  contains a single element, and therefore in the main paper we simply write the  $i$ -th density as  $p_i^{\mathcal{T}}(\mathbf{u}_i|\mathbf{u}_{j\neq i}) = \delta_{\{\tilde{\mathbf{f}}_i(\mathbf{x},\mathbf{u}) = \alpha \}}(\mathbf{u})$ . Note, as discussed in the main paper, that the density at this point should be positive, in other words, the element that yields  $\alpha$  (and therefore  $\alpha$ ) should be a plausible value.
Since this implementation does not make any assumption at all in the functional form of the generator, but directly works on the distribution of the exogenous variables, it can be implemented on any SCM representation (see Fig. 8 in App. B.1) and, hence, on any of the architectures for the causal NF in §4. Notice, however, that in order to properly work, that the data-generative process should be causally consistent (so that changes are properly propagated), and that it should properly isolate  $\mathbf{u}$  (so that  $\mathbf{u}_i$  accounts only for the stochasticity of  $\mathbf{x}_i$  not explained by its parents).
Algorithms The step-by-step algorithms to perform interventions and compute counterfactuals, using the described algorithm, are presented in Alg. 1 and Alg. 2, respectively. It follows the same description as the one given at the end of §5, and the only difference between both algorithms is the way that we obtain samples from the observed distribution (generated vs. given).
Algorithm 1 Algorithm to sample from the interventional distribution,  $P(\mathbf{x} \mid d o(\mathbf{x}_i = \alpha))$ .
1: function SAMPLEINTERVENEDDIST(i, α)  
2: u ~ P_u  
3: x ← T_θ^-1(u) ▷ Sample a value from the observational distribution.  
4: xi ← α ▷ Set xi to the intervened value α.  
5: ui ← T_θ(x)_i ▷ Change the i-th value of u.  
6: x ← T_θ^-1(u)  
7: return x ▷ Return the intervened sample.  
8: end function
Algorithm 2 Algorithm to sample from the counterfactual distribution,  $P(\mathbf{x}^{\mathrm{cf}} \mid do(\mathbf{x}_i = \alpha), \mathbf{x}^{\mathrm{f}})$ .
1: function GETCOUNTERFACTUAL(xf, i, α)  
2: u←  $T_{\theta}(\mathbf{x}^{\mathrm{f}})$   
3: xf← α  
4: ui←  $T_{\theta}(\mathbf{x}^{\mathrm{f}})_i$   
5: xcf←  $T_{\theta}^{-1}(\mathbf{u})$   
6: return xcf  
7: end function
Theoretical results Here, we briefly discuss way this method works, i.e., why the proposed implementation removes every dependency from the descendants with respect to the ancestors that go through the intervened value, as it is not directly obvious.
To see why, take the usual recursive representation of an SCM in the illustrative example from App. B.1 (Fig. 8a), and assume that we do  $do(\mathrm{x}_2 = \alpha)$ , where  $\mathrm{x}_2 = 2\mathrm{x}_1 + \mathrm{u}_2$  in this example. By updating the density  $p_2(\mathrm{u}_2)$ , we have basically fixed the value of  $\mathbf{u}_2$  to be the only one that keeps  $\mathrm{x}_2 = \alpha$  given  $\mathbf{x}_1$ , i.e.,  $\mathrm{u}_2 = \alpha - 2\mathrm{x}_1$  (this can be clearly seen in Fig. 8d). If we now compute the dependency of  $\mathbf{x}_3$  on  $\mathbf{x}_1$ , we get
$$
\frac {\mathrm {d} \mathrm {x} _ {3}}{\mathrm {d} \mathrm {x} _ {1}} = \frac {\partial \mathrm {x} _ {3}}{\partial \mathrm {x} _ {2}} \frac {\mathrm {d} \mathrm {x} _ {2}}{\mathrm {d} \mathrm {x} _ {1}} = \frac {\partial \mathrm {x} _ {3}}{\partial \mathrm {x} _ {2}} \left(\frac {\partial \mathrm {x} _ {2}}{\partial \mathrm {x} _ {1}} + \frac {\partial \mathrm {x} _ {2}}{\partial \mathrm {u} _ {2}} \frac {\mathrm {d} \mathrm {u} _ {2}}{\mathrm {d} \mathrm {x} _ {1}}\right) = \frac {\partial \mathrm {x} _ {3}}{\partial \mathrm {x} _ {2}} (2 + 1 \cdot (- 2)) = 0. \tag {25}
$$
In layman's terms, the value of  $\mathbf{u}_2$  is chosen such that it fixes the value of  $\alpha$ , countering any influence that the parents could have on  $\mathbf{x}_2$  (or any of its intermediate values), and consequently in any of its descendants.
The general case can be similarly proven. Suppose that we do  $do(\mathbf{x}_2 = \alpha)$ , and that we want to compute the indirect influence of an ancestor,  $\mathbf{x}_1$ , on a descendant,  $\mathbf{x}_3$ , passing through  $\mathbf{x}_2$ . Since we are fixing the value of  $\mathbf{u}_2$  (the input of the network) to produce an observed value  $\mathbf{x}_2$  (the output of the network) of  $\alpha$ , we can use implicit differentiation to compute the influence of  $\mathbf{u}_1$  (and therefore  $\mathbf{x}_1$ ) on  $\mathbf{x}_2$  via  $\mathbf{u}_2$ :
$$
\alpha = \mathrm {x} _ {2} \left(\mathrm {u} _ {1}, \mathrm {u} _ {2}\right) \stackrel {\mathrm {d u} _ {1}} {\Longrightarrow} 0 = \frac {\partial \mathrm {x} _ {2}}{\partial \mathrm {u} _ {1}} + \frac {\partial \mathrm {x} _ {2}}{\partial \mathrm {u} _ {2}} \frac {\mathrm {d u} _ {2}}{\mathrm {d u} _ {1}} \Rightarrow \frac {\partial \mathrm {x} _ {2}}{\partial \mathrm {u} _ {2}} \frac {\mathrm {d u} _ {2}}{\mathrm {d u} _ {1}} = - \frac {\partial \mathrm {x} _ {2}}{\partial \mathrm {u} _ {1}}, \tag {26}
$$
and, similar to Eq. 25, any indirect influence of the ancestor,  $\mathbf{u}_1$ , on the descendant,  $\mathbf{x}_3$ , through this intermediate variable,  $\mathbf{x}_2$ , cancels out:
$$
\frac {\partial \mathrm {x} _ {3}}{\partial \mathrm {x} _ {2}} \frac {\mathrm {d} \mathrm {x} _ {2}}{\mathrm {d} \mathrm {u} _ {1}} = \frac {\partial \mathrm {x} _ {3}}{\partial \mathrm {x} _ {2}} \left(\frac {\partial \mathrm {x} _ {2}}{\partial \mathrm {u} _ {1}} + \frac {\partial \mathrm {x} _ {2}}{\partial \mathrm {u} _ {2}} \frac {\mathrm {d} \mathrm {u} _ {2}}{\mathrm {d} \mathrm {u} _ {1}}\right) = \frac {\partial \mathrm {x} _ {3}}{\partial \mathrm {x} _ {2}} \cdot 0 = 0. \tag {27}
$$
We have proven this result not only theoretically, but also empirically through the accurate interventions computed for all the experiments from §6 and App. D. Moreover, this lack of correlation between ancestors and descendants through the intervened variables is clearly shown in pair plots such as the ones in Figs. 12 and 13.
C.2 Interventions in previous works
We now put our implementation of the do-operator (see §5 and App. C) into context, by describing how the methods compared in §6, namely CAREFL [16] and VACA [34], proposed to perform interventions with their models.
CAREFL [16] Two different algorithms were proposed to sample from an interventional distribution in CAREFL: i) a sequential algorithm which mimics the usual implementation of the do-operator with the recursive representation of the SCM; and ii) a parallel algorithm that samples the counterfactual in a single call. While the first algorithm works, the parallel one—which is the one actually implemented—only works when intervening on root nodes.
This second algorithm for  $do(\mathbf{x}_2 = \alpha)$  is described as follows (see Alg. 2 in [16]): i) sample  $\mathbf{u}$  from  $P_{\mathbf{u}}$ ; ii) set  $\mathfrak{u}_i$  to the  $i$ -th value obtained by applying the flow,  $T_{\theta}$ , to an observation with  $\mathbf{x}_i = \alpha$  and  $\mathbf{x}_j = 0$  for  $j \neq i$ ; and iii) return the value obtained by  $T_{\theta}^{-1}$  with  $\mathbf{u}$ .
While this algorithm resembles the one we proposed, the proposed method does not have into account that the value of  $\mathbf{u}_i$  to fix  $\alpha$  does depend on the observed values of its parents, which is clear by looking at the linear illustrative example from Fig. 8d. As a consequence, the algorithm only works when the node has no parents, which is why we replaced it by the one we proposed for the comparisons in §6 and App. D.
VACA [34] Based on GNNs, the approach for intervening on VACA is completely reminiscent to the traditional implementation. Specifically, the authors propose to sever those edges in every layer of the GNN whose endpoints fall in the path generating the intervened variable, so that the ancestors have no way to influence it by design.
While the previous statement is true: ancestors cannot influence the intervened variable nor its descendants, here we argue that this process would require us to "recalibrate" the model, as the middle computations after an intervention change in more complex ways than removing the ancestors from the equation, while keeping the rest unchanged.
To see this, consider the following non-linear triangle SCM:
$$
\left\{ \begin{array}{l} x _ {1} = u _ {1} \\ x _ {2} = x _ {1} ^ {2} u _ {2} \\ x _ {3} = 2 x _ {1} + \frac {x _ {2}}{x _ {1}} + \frac {x _ {2}}{x _ {1} ^ {2}} + u _ {3} \end{array} \right. \tag {28}
$$
which VACA could learn with two layers through the following operations:
$$
\left\{ \begin{array}{l} \mathrm {z} _ {1} = \mathrm {u} _ {1} \\ \mathrm {z} _ {2} = \mathrm {u} _ {1} \mathrm {u} _ {2} \\ \mathrm {z} _ {3} = \mathrm {u} _ {1} + \mathrm {u} _ {2} + \mathrm {u} _ {3} \end{array} \right. \quad \left\{ \begin{array}{l} \mathrm {x} _ {1} = \mathrm {z} _ {1} \\ \mathrm {x} _ {2} = \mathrm {z} _ {1} \mathrm {z} _ {2} \\ \mathrm {x} _ {3} = \mathrm {z} _ {1} + \mathrm {z} _ {2} + \mathrm {z} _ {3} \end{array} . \right. \tag {29}
$$
Now, if we were to intervene with  $do(\mathbf{x}_2 = \alpha)$ , the real SCM would yield:
$$
\left\{ \begin{array}{l} \mathrm {x} _ {1} = \mathrm {u} _ {1} \\ \mathrm {x} _ {2} = \alpha \\ \mathrm {x} _ {3} = 2 \mathrm {x} _ {1} + \frac {\alpha}{\mathrm {x} _ {1}} + \frac {\alpha}{\mathrm {x} _ {1} ^ {2}} + \mathrm {u} _ {3} \end{array} \right. \tag {30}
$$
while VACA would yield:
$$
\left\{ \begin{array}{l} \mathrm {z} _ {1} = \mathrm {u} _ {1} \\ \mathrm {z} _ {2} = \alpha \\ \mathrm {z} _ {3} = \mathrm {u} _ {1} + \alpha + \mathrm {u} _ {3} \end{array} \right. \quad \left\{ \begin{array}{l} \mathrm {x} _ {1} = \mathrm {z} _ {1} \\ \mathrm {x} _ {2} = \alpha \\ \mathrm {x} _ {3} = \mathrm {z} _ {1} + \alpha + \mathrm {z} _ {3} \end{array} \right. \Rightarrow \left\{ \begin{array}{l} \mathrm {x} _ {1} = \mathrm {u} _ {1} \\ \mathrm {x} _ {2} = \alpha \\ \mathrm {x} _ {3} = 2 \mathrm {x} _ {1} + 2 \alpha + \mathrm {u} _ {3} \end{array} , \right. \tag {31}
$$
where we can clearly see that the expression for  $\mathrm{x}_3$  is different. In contrast, our causal NF would keep the generator as it is, and set  $\mathrm{u}_2$  to  $\alpha / \mathrm{x}_1^2$ , yielding the correct value.
D Experimental details and extra results
In this section, we complement the description of the experimental section from §6, and provide the reader with additional results in the following subsections. First, we describe the details common to every experiment, and delve into the specifics of each experiment in their respective subsections.
Hardware Every individual experiment shown in this paper ran on a single CPU with 8 GB of RAM. To run all experiments, we used a local computing cluster with an automatic job assignment system, so we cannot ensure the specific CPU used for each particular experiment. However, we know that every experiment used one of the following CPUs picked randomly given the demand when scheduled: AMD EPYC 7702 64-Core Processor, AMD EPYC 7662 64-Core Processor, Intel(R) Xeon(R) CPU E5-2698 v4 @ 2.20GHz, or Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz.
Training and evaluation methodology For every experiment, we generated with using synthetic SCM a dataset with 20 000 training samples, 2500 validation samples, and 2500 test samples. We ran every model for 1000 epochs, and the results shown in the manuscript correspond to the test set evaluation at the last epoch. For the optimization, we used Adam [17] with an initial learning rate of 0.001, and reduce the learning rate with a decay factor of 0.95 when it reaches a plateau longer than 60 epochs. For hyperparameter tuning, we always perform a grid search with similar budget, and select the best hyperparameter combination according to validation loss, reporting always results from the test dataset in the manuscript. Every experiment is repeated 5 times, and we show averages and standard deviations.
Datasets This section provides all the information of the SCMs employed in the empirical evaluation of §6 of the main paper, and the following subsections. The exogenous variables always follow a standard normal distribution  $\mathcal{N}(0,1)$ , except for LARGEBD, where a uniform distribution  $\mathcal{U}(0,1)$  is used instead. Subsequently, we define the 12 SCMs employed—encompassing both linear and non-linear equations—and we additionally provide their causal graph in Fig. 9.
Let us first define the softplus operation as  $s(x) = \log (1.0 + e^x)$ .
3-CHAINLIN:
$$
\tilde {f} _ {1} \left(\mathrm {u} _ {1}\right) = \mathrm {u} _ {1} \tag {32}
$$
$$
\tilde {f} _ {2} \left(\mathrm {x} _ {1}, \mathrm {u} _ {2}\right) = 1 0 \cdot \mathrm {x} _ {1} - \mathrm {u} _ {2} \tag {33}
$$
$$
\tilde {f} _ {3} \left(\mathrm {x} _ {2}, \mathrm {u} _ {3}\right) = 0. 2 5 \cdot \mathrm {x} _ {2} + 2 \cdot \mathrm {u} _ {3} \tag {34}
$$
3-CHAINNLIN:
$$
\tilde {f} _ {1} \left(\mathrm {u} _ {1}\right) = \mathrm {u} _ {1} \tag {35}
$$
$$
\tilde {f} _ {2} \left(\mathrm {x} _ {1}, \mathrm {u} _ {2}\right) = e ^ {\mathrm {x} _ {1} / 2} + \mathrm {u} _ {2} / 4 \tag {36}
$$
$$
\tilde {f} _ {3} \left(\mathrm {x} _ {2}, \mathrm {u} _ {3}\right) = \frac {\left(\mathrm {x} _ {2} - 5\right) ^ {3}}{1 5} + \mathrm {u} _ {3} \tag {37}
$$
4-CHAINLIN:
$$
\tilde {f} _ {1} \left(\mathrm {u} _ {1}\right) = \mathrm {u} _ {1} \tag {38}
$$
$$
\tilde {f} _ {2} \left(\mathrm {x} _ {1}, \mathrm {u} _ {2}\right) = 5 \cdot \mathrm {x} _ {1} - \mathrm {u} _ {2} \tag {39}
$$
$$
\tilde {f} _ {3} \left(\mathrm {x} _ {2}, \mathrm {u} _ {3}\right) = - 0. 5 \cdot \mathrm {x} _ {2} - 1. 5 \cdot \mathrm {u} _ {3} \tag {40}
$$
$$
\tilde {f} _ {4} \left(\mathrm {x} _ {3}, \mathrm {u} _ {4}\right) = \mathrm {x} _ {3} + \mathrm {u} _ {4} \tag {41}
$$
5-CHAINLIN:
$$
\tilde {f} _ {1} \left(\mathrm {u} _ {1}\right) = \mathrm {u} _ {1} \tag {42}
$$
$$
\tilde {f} _ {2} \left(\mathrm {x} _ {1}, \mathrm {u} _ {2}\right) = 1 0 \cdot \mathrm {x} _ {1} - \mathrm {u} _ {2} \tag {43}
$$
$$
\tilde {f} _ {3} \left(\mathrm {x} _ {2}, \mathrm {u} _ {3}\right) = 0. 2 5 \cdot \mathrm {x} _ {2} + 2 \cdot \mathrm {u} _ {3} \tag {44}
$$
$$
\tilde {f} _ {4} \left(\mathrm {x} _ {3}, \mathrm {u} _ {4}\right) = \mathrm {x} _ {3} + \mathrm {u} _ {4} \tag {45}
$$
$$
\tilde {f} _ {5} \left(\mathrm {x} _ {4}, \mathrm {u} _ {5}\right) = - \mathrm {x} _ {4} + \mathrm {u} _ {5} \tag {46}
$$
COLLIDERLIN:
$$
\tilde {f} _ {1} \left(\mathrm {u} _ {1}\right) = \mathrm {u} _ {1} \tag {47}
$$
$$
\tilde {f} _ {2} \left(\mathrm {u} _ {2}\right) = 2 - \mathrm {u} _ {2} \tag {48}
$$