# NCF Boolean functions

I recently learned about a new class of seemingly complicated, but in fact very simple functions which are called by several names, but perhaps most commonly as NCF Boolean functions (NCF is an abbreviation for “nested canalyzing function,” a term used by mathematical biologists). These functions were independently introduced by theoretical computer scientists in the 1960s using the term unate cascade functions. As described in [JRL2007] and [LAMAL2013], these functions have applications in a variety of scientific fields. This post describes these functions.

A Boolean function of n variables is simply a function $f:GF(2)^n\to GF(2)$. Denote the $GF(2)$-vector space of such functions by $B(n)$. We write an element of this space as $f(x_1,x_2,\dots,x_n)$, where the variables $x_i$ will be called coordinate variables. Let
$Res_{x_i=a}:B(n)\to B(n-1)$
denote the restriction map sending $f(x_1,x_2,\dots,x_n)$ to $f(x_1,x_2,\dots,x_{i-1},a,x_{i+1},\dots, x_n)$. In this post, the cosets
$H_{i,a,n}=\{x=(x_1,x_2,\dots,x_n) \in GF(2)^n\ |\ x_i=a\}$
will be called coordinate hyperplanes ($a \in GF(2), 1\leq i\leq n$). A function in $B(n)$ which is constant along some coordinate hyperplane is called canalyzing. An NCF function is a function $f\in B(n)$ which (a) is constant along some coordinate hyperplane $H_{i_1,a_1,n}$, (b) whose restriction $f_1 = Res_{x_{i_1}=a_1}(f)\in B(n-1)$ is constant along some coordinate hyperplane $H_{i_2,a_2,n-1}\subset GF(2)^{n-1}$, (c) whose restriction $f_2 = Res_{x_{i_2}=a_2}(f_1)\in B(n-2)$ is constant along some coordinate hyperplane $H_{i_2,a_2,n-2}\subset GF(2)^{n-2}$, (d) and so on. This “nested” inductive definition might seem complicated, but to a computer it’s pretty simple and, to boot, it requires little memory to store.

If $1\leq i\leq n$ and $x=(x_1,x_2,\dots,x_n) \in GF(2)^n$ then let $x^i\in GF(2)^n$ denote the vector whose i-th coordinate is flipped (bitwise). The sensitivity of $f\in B(n)$ at $x$ is
$s(f,x) = |\{i\ |\ 1\leq i\leq n, f(x)\not= f(x^i)\}|$. Roughly speaking, it’s the number of single-bit changes in $x$ that change the value of $f(x)$. The (maximum) sensitivity is the quantity
$s(f)=max_x s(f,x).$ The block sensitivity is defined similarly, but you allow blocks of indices of coordinates to by flipped bitwise, as opposed to only one. It’s possible to

• compute the sensitivity of any NCF function,
• show the block sensitivity is equal to the sensitivity,
• compute the cardinality of the set of all monotone NCF functions.

For details, see for example Li and Adeyeye [LA2012].

REFERENCES
[JRL2007] A.S. Jarrah, B. Raposa, R. Laubenbachera, “Nested Canalyzing, Unate Cascade, and Polynomial Functions,” Physica D. 2007 Sep 15; 233(2): 167–174.

[LA2012] Y. Li, J.O. Adeyeye, “Sensitivity and block sensitivity of nested canalyzing function,” ArXiV 2012 preprint. (A version of this paper was published later in Theoretical Comp. Sci.)

[LAMAL2013] Y. Li, J.O. Adeyeye, D. Murrugarra, B. Aguilar, R. Laubenbacher, “Boolean nested canalizing functions: a comprehensive analysis,” ArXiV, 2013 preprint.