# Equivalence classes of Boolean functions

The number of Boolean functions with arity ${\displaystyle \leq n}$ is ${\displaystyle 2^{2^{n}}}$ ().
Many of them are related to each other, and can be grouped in equivalence classes.

This article introduces the names family, faction and clan, as well as the prefixes super and ultra.

own names equivalent under group maximum size sequence
family negation hyperrectangular ${\displaystyle C_{2}^{n}}$ ${\displaystyle 2^{n}}$
faction permutation symmetric ${\displaystyle S_{n}}$ ${\displaystyle n!}$ = 2 ·
clan negation, permutation hyperoctahedral ${\displaystyle C_{2}^{n}\cdot S_{n}}$ ${\displaystyle 2^{n}\cdot n!}$
super-family negation, complement ${\displaystyle 2^{n+1}}$
super-clan negation, permutation, complement ${\displaystyle 2^{n+1}\cdot n!}$

## equivalence classes based on similarity

### basic (negation and permutation)

#### family(negation)

Functions can be turned into each other by negating inputs.

The 10 (exactly) 2-ary Boolean functions form three families, whose representative functions are AND, OR and XOR.   (See this table of 2-ary functions, where equivalents are in the same row.)

The lexicographically smallest truth tables are encoded in = 0, 1, 3, 5, 6, 7, 15, 17, 18...

#### faction(permutation)

Functions can be turned into each other by permuting inputs.
While families and clans can be self-complementary, factions can not. (Therefore the number of factions is always even.)

#### clan(negation, permutation)

Functions can be turned into each other by negating and permuting inputs.

The lexicographically smallest truth tables are encoded in = 0, 1, 3, 6, 7, 15...

### super (extension with complement)

Each Boolean function has a complement. So have the equivalence classes defined above.
Those defined here are the merge of two complements.

#### super-family(negation, complement)

Every family has a complement. Together they form a super-family.
This family is a complete super-family: 1110 0001

#### super-faction(permutation, complement)

Every faction has a complement. Together they form a super-faction.   (Every super-faction contains two factions.)

#### super-clan(negation, permutation, complement)

Every clan has a complement. Together they form a super-clan.
This family is a complete super-clan: 1110 1000

### ultra (extension with half-complement)

 The two families on the left form a super-family. The family on the right is a super-family on its own. Together these two super-families form an ultra-family.

Each Boolean function has two half-complements. (The truth table is complemented on the left or on the right side.)
A super-family has a unique half-complement. Merging them gives an ultra-family.
As super-clans consist of super-families, they can be extended in the same way.
(Factions do not have a unique half-complement, so it does not seem useful to define ultra-factions.)

#### ultra-family(negation, complement, half-complement)

The functions in an ultra-family have symmetric positions in a hypercube graph (or the related matrix). See matrices.
This family is a complete ultra-family: 1100 1010     (better seen in its matrix)

#### ultra-clan(negation, permutation, complement, half-complement)

An ultra-clan is the merge of a super-clan and its half-complement.
It can also be seen as a merge of ultra-families, that are permutations of each other.
See here for a table of the 39 ultra-families of 4-ary Boolean functions.

## Partitions into blocks of equal size

 even evil (0) even odious (2) odd evil (1) odd odious (3)

The parity and depravity of a Boolean function are based on the first and last bit of its truth table.
It is even (odd), iff the first digit of the truth table is false (true). Its Zhegalkin index is also even (odd).
It is evil (odious), iff the last digit of the truth table is false. Its Zhegalkin index has even (odd) binary weight.
(These terms make sense for the Zhegalkin index, rather than the truth table.)
Parity and depravity partition the Boolean functions in halves. Together they partition them into quadrants.

### sharpness

Truth tables with odd weight shall be called sharp. Those with even weight are dull.
(Unlike parity and depravity, this is only the property of a truth table – not of a Boolean function.)

### consuls (binary Walsh spectra)

The Walsh spectrum of a truth table is its product with a Walsh matrix.
Its binary Walsh spectrum is its product with a binary Walsh matrix, using F2 operations (mod 2).
It is always a Walsh function, and shall be called consul. The term is also used for the integer denoting the Walsh function.

#### tribe

The consul weight is the binary weight of the consul. (E.g. consul 6 has consul weight 2.) Ultra-clans with dull truth tables have a unique consul weight. For n-ary truth tables they form the tribes 0...n.
Sharp truth tables form a tribe on their own.