This post summarizes some joint research with Charles Celerier, Caroline Melles, and David Phillips.

Let be a Boolean function. (We identify with either the real numbers or the binary field . Hopefully, the context makes it clear which one is used.)

Define a partial order on as follows: for each , we say whenever we have , , …, . A Boolean function is called *monotone* (increasing) if whenever we have then we also have .

Note that if and are monotone then (a) is also monotone, and (b) . (Overline means bit-wise complement.)

**Definition:**

Let be any monotone function. We say that is the *least support* of if consists of all vectors in which are smallest in the partial ordering on . We say a subset of is *admissible* if for all , and

Monotone functions on are in a natural one-to-one correspondence with the collection of admissible sets.

**Example:**

Here is an example of a monotone function whose least support vectors are given by

illustrated in the figure below.

The algebraic normal form is .

The following result is due to Charles Celerier.

**Theorem:**

Let be a monotone function whose least support vectors are given by . Then

The following example is due to Caroline Melles.

**Example:**

Let be the monotone function whose least support is

Using the Theorem above, we obtain the compact algebraic form

This function is monotone yet has no vanishing Walsh-Hadamard transform values. To see this, we attach the file *afsr.sage* available from Celerier (https://github.com/celerier/oslo/), then run the following commands.

sage: V = GF(2)^(6) sage: L = [V([1,1,0,0,1,1]),V([0,0,1,1,1,1]), V([1,1,1,1,0,0])] sage: f = monotone_from_support(L) sage: is_monotone(f) True

These commands simply construct a Boolean function whose least support are the vectors in *L*. Next, we compute the Walsh-Hadamard transform of this using both the method built into Sage’s sage.crypto module, and the function in *afsr.sage*.

sage: f.walsh_hadamard_transform() (-44, -12, -12, 12, -12, 4, 4, -4, -12, 4, 4, -4, 12, -4, -4, 4, -12, 4, 4, -4, 4, 4, 4, -4, 4, 4, 4, -4, -4, -4, -4, 4, -12, 4, 4, -4, 4, 4, 4, -4, 4, 4, 4, -4, -4, -4, -4, 4, 12, -4, -4, 4, -4, -4, -4, 4, -4, -4, -4, 4, 4, 4, 4, -4) sage: f.algebraic_normal_form() x0*x1*x2*x3 + x0*x1*x4*x5 + x2*x3*x4*x5 sage: x0,x1,x2,x3,x4,x5 = var("x0,x1,x2,x3,x4,x5") sage: g = x0*x1*x2*x3 + x0*x1*x4*x5 + x2*x3*x4*x5 sage: Omega = [v for v in V if g(x0=v[0], x1=v[1], x2=v[2], x3=v[3], x4=v[4], x5=v[5])0] sage: len(Omega) 10 sage: g = lambda x: x[0]*x[1]*x[2]*x[3] + x[0]*x[1]*x[4]*x[5] + x[2]*x[3]*x[4]*x[5] sage: [walsh_transform(g,a) for a in V] [44, 12, 12, -12, 12, -4, -4, 4, 12, -4, -4, 4, -12, 4, 4, -4, 12, -4, -4, 4, -4, -4, -4, 4, -4, -4, -4, 4, 4, 4, 4, -4, 12, -4, -4, 4, -4, -4, -4, 4, -4, -4, -4, 4, 4, 4, 4, -4, -12, 4, 4, -4, 4, 4, 4, -4, 4, 4, 4, -4, -4, -4, -4, 4]

(Note: the Walsh transform method in the *BooleanFunction* class in Sage differs by a sign from the standard definition.) This verifies that there are no values of the Walsh-Hadamard transform which are .

More details can be found in the paper listed here. I end with two questions (which I think should be answered “no”).

**Question:** Are there any monotone functions of variables having no free variables of degree ?

**Question:** Are there any monotone functions of most than two variables which are bent?