Reed–Muller expansion

In Boolean logic, a Reed–Muller expansion (or Davio expansion) is a decomposition of a Boolean function.

For a Boolean function $$f(x_1,\ldots,x_n) : \mathbb{B}^n \to \mathbb{B}$$ we call



\begin{align} f_(x) & = f(x_1,\ldots,x_{i-1},1,x_{i+1},\ldots,x_n) \\ f_{\overline{x}_i}(x)& = f(x_1,\ldots,x_{i-1},0,x_{i+1},\ldots,x_n) \end{align} $$

the positive and negative cofactors of $$f$$ with respect to $$x_i$$, and

\begin{align} \frac{\partial f}{\partial x_i} & = f_{x_i}(x) \oplus f_{\overline{x}_i}(x) \end{align} $$ the boolean derivation of $$f$$ with respect to $$x_i$$, where $${\oplus}$$ denotes the XOR operator.

Then we have for the Reed–Muller or positive Davio expansion:



f = f_{\overline{x}_i} \oplus x_i \frac{\partial f}{\partial x_i}. $$

Description
This equation is written in a way that it resembles a Taylor expansion of $$f$$ about $$x_i=0$$. There is a similar decomposition corresponding to an expansion about $$x_i=1$$ (negative Davio expansion):



f = f_{x_i} \oplus \overline{x}_i \frac{\partial f}{\partial x_i}. $$

Repeated application of the Reed–Muller expansion results in an XOR polynomial in $$x_1,\ldots,x_n$$:



f = a_1 \oplus a_2 x_1 \oplus a_3 x_2 \oplus a_4 x_1 x_2 \oplus \ldots \oplus a_{2^n} x_1\cdots x_n $$

This representation is unique and sometimes also called Reed–Muller expansion.

E.g. for $$n=2$$ the result would be



f(x_1, x_2) = f_{\overline{x}_1 \overline{x}_2} \oplus \frac{\partial f_{\overline{x}_2}}{\partial x_1} x_1 \oplus \frac{\partial f_{\overline{x}_1}}{\partial x_2} x_2 \oplus \frac{\partial^2 f}{\partial x_1 \partial x_2} x_1 x_2 $$

where


 * $$ {\partial^2 f \over \partial x_1 \partial x_2} = f_{\bar x_1 \bar x_2} \oplus f_{\bar x_1 x_2} \oplus f_{x_1 \bar x_2} \oplus f_{x_1 x_2} $$.

For $$n = 3$$ the result would be


 * $$ f(x_1, x_2, x_3) = f_{\bar x_1 \bar x_2 \bar x_3} \oplus {\partial f_{\bar x_2 \bar x_3} \over \partial x_1} x_1 \oplus {\partial f_{\bar x_1 \bar x_3} \over \partial x_2} x_2 \oplus {\partial f_{\bar x_1 \bar x_2} \over \partial x_3} x_3 \oplus {\partial^2 f_{\bar x_3} \over \partial x_1 \partial x_2} x_1 x_2 \oplus {\partial^2 f_{\bar x_2} \over \partial x_1 \partial x_3} x_1 x_3 \oplus {\partial^2 f_{\bar x_1} \over \partial x_2 \partial x_3} x_2 x_3 \oplus {\partial^3 f \over \partial x_1 \partial x_2 \partial x_3} x_1 x_2 x_3 $$

where


 * $$ {\partial^3 f \over \partial x_1 \partial x_2 \partial x_3} = f_{\bar x_1 \bar x_2 \bar x_3} \oplus f_{\bar x_1 \bar x_2 x_3} \oplus f_{\bar x_1 x_2 \bar x_3} \oplus f_{\bar x_1 x_2  x_3} \oplus f_{x_1 \bar x_2 \bar x_3} \oplus f_{x_1 \bar x_2 x_3} \oplus f_{x_1 x_2 \bar x_3} \oplus f_{x_1 x_2 x_3} $$.

Geometric interpretation
This $$n = 3$$ case can be given a cubical geometric interpretation (or a graph-theoretic interpretation) as follows: when moving along the edge from $$\bar x_1 \bar x_2 \bar x_3$$ to $$x_1 \bar x_2 \bar x_3$$, XOR up the functions of the two end-vertices of the edge in order to obtain the coefficient of $$x_1$$. To move from $$\bar x_1 \bar x_2 \bar x_3$$ to $$x_1 x_2 \bar x_3$$ there are two shortest paths: one is a two-edge path passing through $$x_1 \bar x_2 \bar x_3$$ and the other one a two-edge path passing through $$\bar x_1 x_2 \bar x_3$$. These two paths encompass four vertices of a square, and XORing up the functions of these four vertices yields the coefficient of $$x_1 x_2$$. Finally, to move from $$\bar x_1 \bar x_2 \bar x_3$$ to $$x_1 x_2 x_3$$ there are six shortest paths which are three-edge paths, and these six paths encompass all the vertices of the cube, therefore the coefficient of $$x_1 x_2 x_3$$ can be obtained by XORing up the functions of all eight of the vertices. (The other, unmentioned coefficients can be obtained by symmetry.)

Paths
The shortest paths all involve monotonic changes to the values of the variables, whereas non-shortest paths all involve non-monotonic changes of such variables; or, to put it another way, the shortest paths all have lengths equal to the Hamming distance between the starting and destination vertices. This means that it should be easy to generalize an algorithm for obtaining coefficients from a truth table by XORing up values of the function from appropriate rows of a truth table, even for hyperdimensional cases ($$n = 4$$ and above). Between the starting and destination rows of a truth table, some variables have their values remaining fixed: find all the rows of the truth table such that those variables likewise remain fixed at those given values, then XOR up their functions and the result should be the coefficient for the monomial corresponding to the destination row. (In such monomial, include any variable whose value is 1 (at that row) and exclude any variable whose value is 0 (at that row), instead of including the negation of the variable whose value is 0, as in the minterm style.)

Similar to binary decision diagrams (BDDs), where nodes represent Shannon expansion with respect to the according variable, we can define a decision diagram based on the Reed–Muller expansion. These decision diagrams are called functional BDDs (FBDDs).

Derivations
The Reed–Muller expansion can be derived from the XOR-form of the Shannon decomposition, using the identity $$\overline{x} = 1 \oplus x$$:



\begin{align} f & = x_i f_{x_i} \oplus \overline{x}_i f_{\overline{x}_i} \\ & = x_i f_{x_i} \oplus (1 \oplus x_i) f_{\overline{x}_i} \\ & = x_i f_{x_i} \oplus f_{\overline{x}_i} \oplus x_i f_{\overline{x}_i} \\ & = f_{\overline{x}_i} \oplus x_i \frac{\partial f}{\partial x_i}. \end{align} $$

Derivation of the expansion for $$n = 2$$:


 * $$\begin{align}

f & = f_{\bar x_1} \oplus x_1 {\partial f \over \partial x_1} \\ & = \Big( f_{\bar x_2} \oplus x_2 {\partial f \over \partial x_2} \Big)_{\bar x_1} \oplus x_1 {\partial \Big(f_{\bar x_2} \oplus x_2 {\partial f \over \partial x_2} \Big) \over \partial x_1} \\ & = f_{\bar x_1 \bar x_2} \oplus x_2 {\partial f_{\bar x_1} \over \partial x_2} \oplus x_1 \Big({\partial f_{\bar x_2} \over \partial x_1} \oplus x_2 {\partial^2 f \over \partial x_1 \partial x_2}\Big) \\ & = f_{\bar x_1 \bar x_2} \oplus x_2 {\partial f_{\bar x_1} \over \partial x_2} \oplus x_1 {\partial f_{\bar x_2} \over \partial x_1} \oplus x_1 x_2 {\partial^2 f \over \partial x_1 \partial x_2}. \end{align} $$

Derivation of the second-order boolean derivative:


 * $$ \begin{align}

{\partial^2 f \over \partial x_1 \partial x_2} & = {\partial \over \partial x_1} \Big( {\partial f \over \partial x_2} \Big) = {\partial \over \partial x_1} (f_{\bar x_2} \oplus f_{x_2}) \\ & = (f_{\bar x_2} \oplus f_{x_2})_{\bar x_1} \oplus (f_{\bar x_2} \oplus f_{x_2})_{x_1} \\ & = f_{\bar x_1 \bar x_2} \oplus f_{\bar x_1 x_2} \oplus f_{x_1 \bar x_2} \oplus f_{x_1 x_2}. \end{align}$$