The Only MUX Rule
M(S, D0, D1) = S ? D1 : D0
The selector does not calculate a value. It connects exactly one input path to the output.
Constants Create The Four Possible Sources
Once A is the only live input, its output can behave in only four ways. Each picture below uses the same MUX geometry and gives that behavior a two-bit pointer.
Build AND One Branch At A Time
Freeze B, and ask what the output must do as A changes. The answer for each value of B is one of the four source pictures above.
B=0, AND must be zero for both values of A. Choose source 0.B=1, AND follows A. Choose source A.B=0 forces zero; B=1 passes A. Only A=1, B=1 produces one.AND = M(B, 0, A) pointer word 00|01 = 0001
Why No Boolean Function Is Missing
Direct truth-bit construction
Store the four truth-table outputs as C00, C10, C01, and C11. Two MUXes choose by A; a third chooses the correct column by B. Because the four stored bits can contain any pattern, this tree realizes all 16 two-input functions.
The 2020 source-pointer construction
The manuscript uses a different four-bit encoding. It notices that each fixed-B column is exactly one of 0, A, 1, or NOT A, then stores two source addresses instead of four direct truth bits.
B column is one two-bit behavior of A, so each column needs only a two-bit source pointer.B=0 source. The low pair addresses the B=1 source.B chooses which addressed branch reaches Y.Do not mix the encodings. A truth vector lists four outputs in the visible order A0B0, A0B1, A1B0, A1B1. The 2020 pointer word contains two source addresses in the order B=0 | B=1.
For example, XOR has truth vector 0110 but pointer word 01|11 = 0111.
Every Two-Input Function As A Circuit
Each card shows the smallest 2:1 MUX wiring, the four visible truth outputs, and the 2020 pointer word. Constants and direct wires count as zero MUXes. XOR, XNOR, NAND, and NOR need two; the other nontrivial functions need one.
When B=0, source 0 uses pointer 00
The high pointer pair is 00.
When B=0, source A uses pointer 01
The high pointer pair is 01.
When B=0, source 1 uses pointer 10
The high pointer pair is 10.
More Inputs Repeat The Same Move
For a third input, split the function once more. The two branches are now two-input functions from the catalog above. Repeating the split eventually reaches constants, so nested MUXes can express any Boolean function.
The Original 2020 Figures
The diagrams above are clean teaching redraws. The source manuscript's Logisim figures remain here as the original functional evidence.
B selects the final branch.
S0=0, S1=0.
S0=1, S1=0.
S0=0, S1=1.
S0=1, S1=1.Date: the manuscript identifies 2020 but gives no month or day, so none has been invented.
Web edition: variable names were normalized to A and B; the manuscript's inconsistent implication directions were replaced by the truth-table-correct labels A → B and B → A.
Evidence boundary: the Logisim images show the functional selector network. They are not a transistor layout, extracted circuit, or powered-hardware measurement.
The manuscript calls its configurable circuit a “16 CMOS transistor” LUT2 and describes two selectors as six-transistor MUXes. That is the proposal in the note, not a universal device count: the total depends on MUX topology, complemented-selector generation, source sharing, loading, and output drive.
Exact executable definition
function muxAlgebra(a, b, config) {
const sources = [0, a, 1, Number(!a)];
const pointer = b ? (config & 0b11) : (config >> 2);
return sources[pointer];
}
muxAlgebra(1, 1, 0b0001); // AND -> 1
muxAlgebra(1, 1, 0b0111); // XOR -> 0
Where This Construction Leads
The Logisim-to-LUT learning path grows this exact selection rule from LUT1 through LUT6 and connects it to Lattice and AMD/Xilinx FPGA primitives. The physical MUX tiles make the selector, constants, routes, intersections, and orientation tangible. Boolean Algebra Is All That Is Required extends the same completeness argument into storage, configuration transport, ownership, and an extensible fabric.