Exercise 2: Tracing OR(0,1) Built Entirely From NAND — Possible Solution ==================================================================== GIVEN ------------------------------ x=0, y=1. Compute OR(x,y) using only: NOT(a) = NAND(a,a) OR(x,y) = NAND(NOT(x), NOT(y)) STEP 1: COMPUTE NOT(x) = NAND(x,x) ------------------------------ NOT(0) = NAND(0,0) NAND(0,0): AND(0,0)=0, so NAND(0,0) = NOT(0) = 1 (using the base NAND truth table directly here, since this is the primitive operation everything else is built from) NOT(x) = 1 STEP 2: COMPUTE NOT(y) = NAND(y,y) ------------------------------ NOT(1) = NAND(1,1) NAND(1,1): AND(1,1)=1, so NAND(1,1) = NOT(1) = 0 NOT(y) = 0 STEP 3: COMPUTE OR(x,y) = NAND(NOT(x), NOT(y)) = NAND(1, 0) ------------------------------ NAND(1,0): AND(1,0) = 0, so NAND(1,0) = NOT(0) = 1 OR(x,y) = 1 RESULT ------------------------------ OR(0,1) = 1, computed using only NAND operations at every step. This matches the actual truth table value for OR(0,1), which is 1 (since at least one input is 1). WHY THIS WORKS AS AN ANSWER ------------------------------ Every single operation in the chain is expanded down to a raw NAND application (not skipped or shortcut using the "actual" OR/NOT truth tables), showing concretely how this chapter's own functional-completeness claim plays out for one specific real input pair.