Are || and ! operators sufficient to make every possible logical expression?
The logical expression `( a && b )` *(both `a` and `b` have boolean values)* can be written like `!(!a || !b)`, for example. Doesn't this mean that `&&` is "unneccesary"? Does this mean that *all* logical expressions can be made only using `||` and `!`?