Vectorial Boolean functions

\label{VectBool}

A vectorial Boolean function is a function

\begin{equation} F:(\mathbb{F}_{2})^{n}\rightarrow(\mathbb{F}_{2})^{m},\nonumber \\ \end{equation}

with \(m,n\in\mathbb{N}\).

We can represent a vectorial Boolean function as a vector of Boolean functions:

\begin{equation} F:(\mathbb{F}_{2})^{n}\rightarrow(\mathbb{F}_{2})^{m},\nonumber \\ \end{equation} \begin{equation} (x_{1},...,x_{n})\mapsto\left[\begin{matrix}F_{1}(x_{1},...,x_{n})\\ \vdots\\ F_{m}(x_{1},...,x_{n})\end{matrix}\right],\nonumber \\ \end{equation}
\label{ExVectBool}

The function \(F:(\mathbb{F}_{2})^{3}\rightarrow(\mathbb{F}_{2})^{2},\) given by \((x,y,z)\mapsto(xy+y,y+z)\) is a vectorial Boolean function.

We notice that every component of a vectorial Boolean function is a Boolean function, so each component can be represented in its absolute normal form.

\label{VectANF}

Let

\begin{equation} F:(\mathbb{F}_{2})^{n}\rightarrow(\mathbb{F}_{2})^{m},n,m\in\mathbb{N}\nonumber \\ \end{equation}

be a vectorial Boolean function. Then \(F=\left[\begin{matrix}F_{1}(x_{1},...,x_{n})\\ \vdots\\ F_{m}(x_{1},...,x_{n})\end{matrix}\right],\) with

\begin{equation} F_{i}=\sum_{S\subset\{1,...,n\}}a_{S}^{(i)}x_{S}^{(i)},\nonumber \\ \end{equation}

where \(a_{S}^{(i)}\in\mathbb{F}_{2}\) and \(x_{S}^{(i)}=\prod_{j\in S}x_{j}\) for every \(j\in\{1,...,m\}\).

Since the size of the set of all functions from a set \(A\) to a set \(B\) i.e. \(\mathfrak{F}=\{f:B\rightarrow B\}\) is \(|\mathfrak{F}|=|B|^{|A|}\), then the number of all vectorial Boolean functions from \((\mathbb{F}_{2})^{n}\) to \((\mathbb{F}_{2})^{m}\) is \((2^{m})^{2^{n}}=2^{m2^{n}}\). We observe that the same number comes from counting all vectors of length \(m\) with components which are Boolean functions in \(x_{1},...,x_{n}\).

A special case of Boolean functions arises when \(m=n\), i.e. the domain and the codomain of the function coincide:

\begin{equation} F:(\mathbb{F}_{2})^{n}\rightarrow(\mathbb{F}_{2})^{n},n\in\mathbb{N}\nonumber \\ \end{equation}

Some of these could be permutations (i.e. bijections). Since a vectorial Boolean function is a function between two finite sets, then it is a invertible if and only if it is injective or surjective.

\label{DegVectBoolFunct}

Let \(n\in\mathbb{N}\). If \(F:(\mathbb{F}_{2})^{n}\rightarrow(\mathbb{F}_{2})^{n}\) is a permutation, then

\begin{equation} \deg(F_{i})\leq n-1,\,\forall i\in\{1,...,n\}.\nonumber \\ \end{equation}