Noble Boolean functions

Noble Boolean functions are those who are their own Zhegalkin twins, i.e. the binary expression of their ANF is equal to their truth table. They correspond to in the Zhegalkin permutation. They are all even, i.e. the first digit of their truth table is false. When a Boolean function is noble, its whole faction is noble. Within the this project it is slightly misleading to apply the term noble to Boolean functions. It is a property of a truth table with a specific length.



These matrices show the 2-ary and 3-ary Boolean functions, represented by the big gray integers (corresponding to the truth tables). The small black integers above them are the senior nobles (i.e. one arity above). (The highlighted big numbers are the king indices.)







The images show how $$\Phi_n$$ is derived from $$\Pi_{n-1}$$, the permutation of the same length. The long matrices have two halves: In the upper half the bit pattern in column $$k$$ is that of $$\Xi_{n-1,~k} ~ = ~ \Pi_{n-1,~k} \oplus k$$. (Compare triangle Ξ in the next section.) The bit pattern in the lower half is identical to that of the gray column indices.

$$\Phi_{n,~k} =  \Xi_{n-1,~k} + \bigl(2^{2^{n-1}} \cdot k \bigr)  =  \bigl(\Pi_{n-1,~k} \oplus k \bigr) + \bigl(2^{2^{n-1}} \cdot k \bigr)$$

The small matrices on the left are divided in the same way: The upper half is a Sierpiński triangle without the main diagonal, and the lower half is the main diagonal.

These properties of noble Boolean functions can be derived from this:
 * They are even, i.e. place 0 is always false.
 * The 1-bit places (e.g. 1, 2, 4, 8) have the same truth value. (Those where it is false/true shall be called weak/strong.)
 * Half of them are evil/odious, which is indicated by the last place being false/true. (The odious ones are on the right, just like in triangle &Pi;.)

quadrants
It is easily seen, that the left and right half of each row differ only in the last digit. Those on the left/right have even/odd weight. They shall be called evil/odious.

There is a second way to partition the nobles in two halves: Those in even/odd places of the triangle row have false/true entries in all 1-bit places of their truth table. They shall be called weak/strong.

So the nobles can be partitioned into four quadrants by depravity and strength.

Vertically adjacent quadrants contain relative complements. Horizontally adjacent quadrants differ only in the central vertex. (40 and 214 are relative complements. 40 and 168 differ only in the central vertex.)

The 16 noble 3-ary Boolean functions form 8 factions. So there are 2 royal factions.

Nobles that are evil and weak shall be called royal. Each noble corresponds to a royal, and can easily be derived from it. (A royal corresponds to itself.) When a Boolean function is royal, its whole faction is royal. The function with the smallest Zhegalkin index in a faction shall be called king, and be used to represent it. So all nobles of a given arity can effectively be represented by a rather short list of kings.

The columns of this matrix are the 4-ary royal Boolean functions. Compare $$\Phi_4$$ as 16×256 matrix, shown above. The 16×6 matrix on the left is shown as the 16×8 matrix from that file, with the left and right column blacked out.



The top left corner in each 2×2 matrix is a king. The other corners are its equivalents in the other quadrants. (Vertically adjacent quadrants contain relative complements. Horizontally adjacent quadrants differ only in the central vertex.)

The two tables below correspond to the image above. The one on the left shows the same numbers as the image. The one on the right shows the smallest Zhegalkin index for each of the 44 factions. (They differ only for the odd factions, i.e. those with green and blue background.)

The black integers are Zhegalkin indices. The gray numbers below are their noble indices, i.e. the positions in the sequence of nobles. The beige numbers in the image are faction sizes, i.e. the number of different permutations of the example shown.



group under exclusive or
With XOR as a group operation the n-ary noble and royal Boolean functions form a power of the C2.

The 3-ary nobles form the group C24.

The Python operator  represents the.

This works for any row of the noble triangle $$\Phi$$, or from the royal triangle. (But not from the triangle of kings.)

patrons
The XOR of twins is noble, i.e. the XOR of a key and a value in $$\Pi_n$$ is an entry of $$\Phi_n$$. For a Boolean function this means, that the XOR of its ANF and its truth table is a noble Boolean function, which shall be called its patron. The patron of a noble is the contradiction.

For $$n \ge 1$$ the entries in $$\Xi_n$$ are repetitions of those in $$\Phi_n$$. E.g. $$\Xi_2$$ contains the entries $$\{0, 6, 8, 14\}$$, each repeated four times.

The set of places where $$\Xi_n$$ has entries $$\Phi_{n,~k}$$ can be calculated by XORing $$\Pi_{n-1,~k}$$ with the entries of $$\Phi_n$$.