Boolean functions: functional completeness
What about using only 1 Boolean function?
We showed earlier that OR could be implemented using only NAND:
x | y = (x NAND x) NAND (y NAND y)
In the process of doing so, we also showed that NOT could be implemented with NAND:
~x = x NAND x
Since {OR, NOT} is functionally complete, so is {NAND}
Similarly, we can show that OR and NOT can be implemented with NOR:
~x = ~(x | x)
   = x NOR x
x | y = ~~(x | y)
      = ~(x NOR y)
      = (x NOR y) NOR (X NOR y)