def NAND(a, b) !(a && b)enddef NOT(a) NAND(a, a)enddef AND(a, b) NOT(NAND(a, b))enddef OR(a, b) NAND(NOT(a), NOT(b))enddef XOR(a, b) AND(OR(a, b), NAND(a, b))enddef MUX(a, b, sel) OR(AND(NOT(sel), a), AND(sel, b))end