iO from Matrix Branching Programs Recently I'm learning about constructing iO from Matrix Branching Programs via Multi-linear Maps (to be exact, [GGH+13] and [GGH15]). However, I have a small question that I couldn't figure out.
It seems like the steps of converting a program/circuit into an obfuscated one is to first convert it into an MBP (a bunch of $M_{i,b}$s) via [Bar86]. Then, we can use Kilian randomization to add random 2k $R_i, R_i^{-1}$ matrices to make the MBP matrices distribution look random. Next, we put this into the MMap framework that allows people to do add/multiply plus a zero test. Finally, there's some construction that protects input mixing attacks.
My question is that why we need to put this MBP into the MMap framework? It seems like that after the Kilian randomization, the matrices in the MBP already look random and don't leak information. Couldn't we just publish the randomized MBP as the obfuscated version of the program? I feel that I'm missing something here...
The problem is that two partial evaluations of same length $\ell$ will have the form
$R_0 B_1 R_\ell^{-1}$
and
$R_0 B_2 R_\ell^{-1}$.
Thus, because the attacker possible knows $B_1$ and $B_2$, they can learn something
about the branching program that is obfuscated.
Encoding these randomized matrices with the multilinear map hides (or at least tries to hide) these relations.
Consider the security definition of iO.
It says that an attacker chooses two equivalent branching programs $P_1$ and $P_2$, sends them to an obfuscator, and then receives an obfuscated program $P$. The goal is to guess if $P$ corresponds to $P_1$ or $P_2$.
Now, if the obfuscation is done without the multilinear map, an attacker can break the security definition as follows:

Choose two different matrices $A$ and $B$;

Choose a length-2 branching program $P_1$ with a single input bit as follows:
$$\text{bit 0:} ~ ~ ~ ~ I  ~ ~ ~ ~ A$$
$$\text{bit 1:} ~ ~ ~ ~ I  ~ ~ ~ ~ B$$
$$\text{inp}(1) = \text{inp}(2) = 1$$

Choose a length-2 branching program $P_2$ with a single input bit as follows:
$$\text{bit 0:} ~ ~ ~ ~ A  ~ ~ ~ ~ I$$
$$\text{bit 1:} ~ ~ ~ ~ B  ~ ~ ~ ~ I$$
$$\text{inp}(1) = \text{inp}(2) = 1$$


Notice that $P_1(0) = P_2(0) = A$ and $P_1(1) = P_2(1) = B$, thus, they are equivalent programs.
Now, if $P$ obfuscates $P_1$, it is of the form
$$\text{bit 0:} ~ ~ ~ ~ R_1 \cdot R_2^{-1} ~ ~ ~ ~ ~ ~ ~ ~ R_2 \cdot A \cdot R_3^{-1}$$
$$\text{bit 1:} ~ ~ ~ ~ R_1 \cdot R_2^{-1}  ~ ~ ~ ~ ~ ~ ~ ~ R_2 \cdot B \cdot R_3^{-1}$$
Thus, we can distinguish the obfuscated programs by checking if the matrices
corresponding to the first step are equal.